#define UP 4 #define PR 5 #define DN 6 #define RH 19 #define HD 20 #define LF 21 unsigned long debounceDelay = 10; // Adjust the debounce delay as needed int up_rd, pr_rd, dn_rd, rh_rd, hd_rd, lf_rd; unsigned long lastDebounceTime_UP = 0; unsigned long lastDebounceTime_PR = 0; unsigned long lastDebounceTime_DN = 0; unsigned long lastDebounceTime_RH = 0; unsigned long lastDebounceTime_HD = 0; unsigned long lastDebounceTime_LF = 0; int buttonState_UP = LOW; int buttonState_PR = LOW; int buttonState_DN = LOW; int buttonState_RH = LOW; int buttonState_HD = LOW; int buttonState_LF = LOW; void setup_buttons() { pinMode(UP, INPUT); pinMode(PR, INPUT); pinMode(DN, INPUT); pinMode(RH, INPUT); pinMode(HD, INPUT); pinMode(LF, INPUT); } int debounceButton(int buttonPin, int &lastButtonState, unsigned long &lastDebounceTime, int &buttonState) { int reading = digitalRead(buttonPin); //Serial.print(reading); if (reading != lastButtonState) { lastDebounceTime = millis(); } if ((millis() - lastDebounceTime) > debounceDelay) { if (reading != buttonState) { buttonState = reading; return buttonState; } } lastButtonState = reading; return buttonState; } void buttons_read() { up_rd = debounceButton(UP, buttonState_UP, lastDebounceTime_UP, buttonState_UP); pr_rd = debounceButton(PR, buttonState_PR, lastDebounceTime_PR, buttonState_PR); dn_rd = debounceButton(DN, buttonState_DN, lastDebounceTime_DN, buttonState_DN); rh_rd = debounceButton(RH, buttonState_RH, lastDebounceTime_RH, buttonState_RH); hd_rd = debounceButton(HD, buttonState_HD, lastDebounceTime_HD, buttonState_HD); lf_rd = debounceButton(LF, buttonState_LF, lastDebounceTime_LF, buttonState_LF); }