제조사 | OEM |
---|---|
브랜드 | 에듀이노 |
판매가 | 4,400원 |
할인판매가 | 3,520원 (20% 할인) |
적립금 | 40원 |
자체상품코드 | D-127 |
국내·해외배송 | 국내배송 |
배송방법 | 택배 |
수량 |
COMMENT |
(최소주문수량 1개 이상 / 최대주문수량 0개 이하)
사이즈 가이드1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | // 회전 인코더를 사용하여 시계방향과 반시계방향을 감지하는 예제 코드 // 핀 설정 const int encoderPinA = 3; // 회전 인코더 A 핀 const int encoderPinB = 4; // 회전 인코더 B 핀 const int switchPin = 2; // 회전 인코더 스위치 핀 // 변수 선언 volatile int encoderPos = 0; // 회전 인코더의 스텝 카운터 volatile bool aSetLast = false; // 이전 A 신호 상태 volatile bool bSetLast = false; // 이전 B 신호 상태 void setup() { Serial.begin(9600); // 시리얼 통신 시작 pinMode(encoderPinA, INPUT); // 회전 인코더 A 핀을 입력으로 설정 pinMode(encoderPinB, INPUT); // 회전 인코더 B 핀을 입력으로 설정 pinMode(switchPin, INPUT_PULLUP); // 회전 인코더 스위치 핀을 입력 풀업으로 설정 attachInterrupt(digitalPinToInterrupt(encoderPinA), updateEncoder, CHANGE); // 인터럽트 설정 } void loop() { // 회전 인코더의 스텝 카운터 출력 Serial.print("Encoder Pos: "); Serial.println(encoderPos); // 스위치 상태 확인 if (digitalRead(switchPin) == LOW) { Serial.println("스위치 눌림"); } delay(100); // 딜레이 } // 회전 인코더 갱신 함수 void updateEncoder() { bool aSet = digitalRead(encoderPinA); // 회전 인코더 A 핀의 상태 bool bSet = digitalRead(encoderPinB); // 회전 인코더 B 핀의 상태 // 이전 A 신호와 현재 A 신호 비교하여 회전 방향 판단 if (aSet != aSetLast) { if (bSet != aSet) { encoderPos++; } else { encoderPos--; } } // 현재 상태를 이전 상태로 저장 aSetLast = aSet; bSetLast = bSet; } | cs |