Re: 엔코더모듈과 RGB모듈

Re: 엔코더모듈과 RGB모듈

Makerist 0 650

#define CLK 2    // CLK 핀을 2번으로 정의
#define DT 3     // DT 핀을 3번으로 정의
#define SW 4     // 버튼 핀을 4번으로 정의


// RGB LED 핀 설정
#define RED_PIN 9
#define GREEN_PIN 10
#define BLUE_PIN 11


// RGB LED 초기 색상 설정 (흰색)
int redValue = 255;
int greenValue = 255;
int blueValue = 255;


int lastCLKState = LOW;         // 이전 CLK 상태
int buttonState = HIGH;         // 버튼 상태
unsigned long lastDebounceTime = 0;  // 마지막 디바운스 시간
unsigned long debounceDelay = 50;     // 디바운스 지연 시간


void setup() {
  pinMode(CLK, INPUT);
  pinMode(DT, INPUT);
  pinMode(SW, INPUT_PULLUP);  // 내부 풀업 저항 사용
  pinMode(RED_PIN, OUTPUT);
  pinMode(GREEN_PIN, OUTPUT);
  pinMode(BLUE_PIN, OUTPUT);
  Serial.begin(9600);
}


void loop() {
  // 버튼 디바운싱
  int reading = digitalRead(SW);
  if (reading != buttonState) {
    lastDebounceTime = millis();
  }
  if ((millis() - lastDebounceTime) > debounceDelay) {
    if (reading != buttonState) {
      buttonState = reading;
      if (buttonState == LOW) {
        Serial.println("버튼 눌림!");
        // 버튼이 눌렸을 때, RGB LED 초기화 (흰색)
        redValue = 255;
        greenValue = 255;
        blueValue = 255;
      }
    }
  }


  // CLK 신호 읽기
  int CLKState = digitalRead(CLK);


  // CLK 신호가 변경되었는지 확인
  if (CLKState != lastCLKState) {
    if (digitalRead(DT) != CLKState) { // DT 신호 확인하여 회전 방향 결정
      Serial.println("시계방향 회전");
      // 시계방향 회전 시 RGB 색상 변경 (R->G->B->R...)
      redValue = 0;
      greenValue = 255;
      blueValue = 0;
    } else {
      Serial.println("반시계방향 회전");
      // 반시계방향 회전 시 RGB 색상 변경 (R->B->G->R...)
      redValue = 255;
      greenValue = 0;
      blueValue = 0;
    }
    analogWrite(RED_PIN, redValue);
    analogWrite(GREEN_PIN, greenValue);
    analogWrite(BLUE_PIN, blueValue);
  }


  // 현재 CLK 상태를 이전 상태로 업데이트
  lastCLKState = CLKState;
}

0 Comments
Category
반응형 구글광고 등
State
  • 현재 접속자 81 명
  • 오늘 방문자 1,339 명
  • 어제 방문자 3,368 명
  • 최대 방문자 4,586 명
  • 전체 방문자 676,599 명
  • 전체 게시물 26,447 개
  • 전체 댓글수 36 개
  • 전체 회원수 22 명
Facebook Twitter GooglePlus KakaoStory KakaoTalk NaverBand