/*** Detect rotation of Rotary Encoder by pin2 & pin3 send rotation state to PC via SerialPort. CPU: ATMEGA8 16MHz Compiler: Arduino 0009 Alpha Date: 2007/10/26 Author: Sho Hashimoto WebSite: http://shokai.org ***/ char led_pin = 13; // LED on Arduino board char rot_pinA = 2; // PinA of RotaryEncoder char rot_pinB = 3; // PinB void setup() { Serial.begin(9600); pinMode(led_pin, OUTPUT); digitalWrite(led_pin, HIGH); pinMode(rot_pinA, INPUT); pinMode(rot_pinB, INPUT); } char rot_state; void loop() { char past_state = rot_state; // 2つのピンからの入力状態をチェック if(digitalRead(rot_pinA)){ if(digitalRead(rot_pinB)) // HH rot_state = 1; else // HL rot_state = 0; } else{ if(digitalRead(rot_pinB)) // LH rot_state = 2; else // LL rot_state = 3; } // 回転方向を割り出す if((rot_state+3+1)%3 == past_state){ // 右回り Serial.println("R"); } else if((rot_state+3-1)%3 == past_state){ // 左回り Serial.println("L"); } delayMicroseconds(10); }