Work with incremental encoders.
- Code for Arduino with two connected encoders (only use channels A and B)
#define encoder1PinA 2 // А pin 2 interrupt #define encoder1PinB 4 // B pin 4 #define encoder2PinA 3 // А pin 3 interrupt #define encoder2PinB 5 // B pin 5 volatile long encoder1Pos = 0; volatile long encoder2Pos = 0; void setup() { pinMode(encoder1PinA, INPUT); pinMode(encoder1PinB, INPUT); pinMode(encoder2PinA, INPUT); pinMode(encoder2PinB, INPUT); attachInterrupt(0, Encoder1, RISING); attachInterrupt(1, Encoder2, RISING); Serial.begin (9600); } void Encoder1() { if (digitalRead(encoder1PinA) == HIGH) { if (digitalRead(encoder1PinB) == LOW) { encoder1Pos = encoder1Pos + 1; // clockwise } else { encoder1Pos = encoder1Pos - 1; // counterclockwise } } } void Encoder2() { if (digitalRead(encoder2PinA) == HIGH) { if (digitalRead(encoder2PinB) == LOW) { encoder2Pos = encoder2Pos + 1; // clockwise } else { encoder2Pos = encoder2Pos - 1; // counterclockwise } } } void loop () { Serial.print(encoder1Pos); Serial.print(" "); Serial.print(encoder2Pos); Serial.println(""); }