// define the pins for the rotary encoder const int pinA = 2; const int pinB = 3; const int sw = 4; // define the current and previous state of the rotary encoder pins int currA = 0; int currB = 0; int prevA = 0; int prevB = 0; int prevButton = 1; int currButton = 0; // define the current and previous positions of the rotary encoder int position = 0; int prevPosition = 0; void setup() { // set the pin modes for the rotary encoder pinMode(pinA, INPUT_PULLUP); pinMode(pinB, INPUT_PULLUP); pinMode(sw, INPUT_PULLUP); // enable pull-up resistors on the rotary encoder pins // digitalWrite(pinA, HIGH); // digitalWrite(pinB, HIGH); // initialize the serial communication Serial.begin(9600); } void loop() { // read the current state of the rotary encoder currA = digitalRead(pinA); currB = digitalRead(pinB); //read state of button currButton = digitalRead(sw); // check if the state of pin A has changed if (currA != prevA) { // if pin A has changed, check the state of pin B to determine direction if (currA == currB) { // clockwise rotation position++; } else { // counter-clockwise rotation position--; } delay(50); Serial.println(position); } if(currButton == 0 && prevButton == 1){ Serial.println("button press"); delay(20); } prevButton = currButton; // update the previous state and position of the rotary encoder prevA = currA; prevB = currB; prevPosition = position; }