#include <LiquidCrystal>
LiquidCrystal_I2C LCD = LiquidCrystal_I2C(0x27, 16, 2);
#define outputA 4
#define outputB 5
int counter = 0;
int aState;
int aLastState;
void setup() {
pinMode (outputA,INPUT);
pinMode (outputB,INPUT);
Serial.begin (9600);
// Reads the initial state of the outputA
aLastState = digitalRead(outputA);
LCD.init();
// turn on LCD backlight
LCD.backlight();
}
void loop() {
aState = digitalRead(outputA); // Reads the "current" state of the outputA
// If the previous and the current state of the outputA are different, that means a Pulse has occured
if (aState != aLastState){
// If the outputB state is different to the outputA state, that means the encoder is rotating clockwise
if (digitalRead(outputB) != aState) {
counter++;
} else {
counter--;
}
Serial.print("Position:");
Serial.println(counter);
LCD.setCursor(0, 0);
// print message
LCD.print("Position:");
LCD.print(counter);
}
aLastState = aState; // Updates the previous state of the outputA with the current state
}