// Pin definitions for EC11 encoder
const int PIN_ENC_A = 1; // DT pin
const int PIN_ENC_B = 0; // CLK pin
const int PIN_ENC_BTN = 10; // SW pin
// Variables for encoder state
volatile int counter = 1; // Current value (1-3)
volatile int lastEncA = 0; // Last state of encoder pin A
volatile int lastEncB = 0; // Last state of encoder pin B
// Simple button debounce
unsigned long lastDebounceTime = 0;
const unsigned long debounceDelay = 10; // Reduced debounce time
int lastButtonState = HIGH;
int buttonState = HIGH;
void setup() {
// Configure pins
pinMode(PIN_ENC_A, INPUT);
pinMode(PIN_ENC_B, INPUT);
pinMode(PIN_ENC_BTN, INPUT_PULLUP);
Serial.begin(115200);
Serial.println("\nEC11 Encoder Test - Button Debug");
// Read initial states
lastEncA = digitalRead(PIN_ENC_A);
lastEncB = digitalRead(PIN_ENC_B);
// Print pin mode confirmation
Serial.print("Button Pin Mode: ");
Serial.println(PIN_ENC_BTN);
Serial.print("Initial Button Reading: ");
Serial.println(digitalRead(PIN_ENC_BTN));
}
void loop() {
// Encoder handling (unchanged)
int encA = digitalRead(PIN_ENC_A);
int encB = digitalRead(PIN_ENC_B);
if (encA != lastEncA) {
if (encA == 0) {
if (encB == 1) {
if (counter < 3) {
counter++;
Serial.print("Count: ");
Serial.println(counter);
}
} else {
if (counter > 1) {
counter--;
Serial.print("Count: ");
Serial.println(counter);
}
}
}
lastEncA = encA;
}
// Simplified button handling with continuous monitoring
int reading = digitalRead(PIN_ENC_BTN);
// Always print button reading if it changed
static int lastReading = -1;
if (reading != lastReading) {
Serial.print("Button Pin Reading: ");
Serial.println(reading);
lastReading = reading;
}
// If the button state changed, due to noise or pressing
if (reading != lastButtonState) {
lastDebounceTime = millis();
}
if ((millis() - lastDebounceTime) > debounceDelay) {
// If the reading is different from the current button state
if (reading != buttonState) {
buttonState = reading;
// If the new button state is LOW (pressed)
if (buttonState == LOW) {
Serial.println("BUTTON PRESSED - RESETTING");
counter = 1;
Serial.print("Counter reset to: ");
Serial.println(counter);
}
}
}
lastButtonState = reading;
delay(1); // Short delay for stability
}