ロータリーエンコーダ

/*
  ロータリーエンコーダ
*/

int val;
int encoder0PinA = 5;
int encoder0PinB = 4;
int encoder0Pos = 0;
int encoder0PinALast = LOW;
int n = LOW;
int outPin13 = 13;
int outPin12 = 12;

void setup() {
  pinMode (encoder0PinA, INPUT);
  pinMode (encoder0PinB, INPUT);
  Serial.begin (115200);
  pinMode(outPin13, OUTPUT);
  pinMode(outPin12, OUTPUT);
}

void loop() {
  n = digitalRead(encoder0PinA);
  if ((encoder0PinALast == LOW) && (n == HIGH)) {
    if (digitalRead(encoder0PinB) == LOW) {
      encoder0Pos--;
      digitalWrite(outPin13, LOW);
      digitalWrite(outPin12, HIGH);
      delay(abs(encoder0Pos));
    } else {
      encoder0Pos++;
      digitalWrite(outPin12, LOW);
      digitalWrite(outPin13, HIGH);
      delay(abs(encoder0Pos));
    }
    Serial.print (encoder0Pos);
    Serial.print ("/");
  }
  encoder0PinALast = n;
}




YouTube