diff --git a/EncoderTester/EncoderTester.ino b/EncoderTester/EncoderTester.ino new file mode 100644 index 0000000..ecea2a9 --- /dev/null +++ b/EncoderTester/EncoderTester.ino @@ -0,0 +1,76 @@ +// 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; + +}