diff --git a/init.py b/init.py index 0356126..d2d1046 100644 --- a/init.py +++ b/init.py @@ -25,6 +25,8 @@ class AlarmClock: lastKnownButtonState: bool = False lcd: JHD1802 lastButtonPressTime: float = 0.0 + lastButtonStateChangeTime: float = 0.0 + debounceDelay: float = 0.05 # 50ms debounce delay def __init__(self, pins: dict = {}): self.ledGpio = GPIO(pins.get("led", 5), GPIO.OUT) self.buttonGpio = GPIO(pins.get("button", 6), GPIO.IN) @@ -43,9 +45,14 @@ class AlarmClock: def loop(self): currentButtonState = not self.buttonGpio.read() + currentTime = time() + + # Only process button state change if debounce delay has passed if currentButtonState != self.lastKnownButtonState: - self.lastKnownButtonState = currentButtonState - self.onButtonPress("button", currentButtonState) + if (currentTime - self.lastButtonStateChangeTime) >= self.debounceDelay: + self.lastKnownButtonState = currentButtonState + self.lastButtonStateChangeTime = currentTime + self.onButtonPress("button", currentButtonState) def onButtonPress(self, button: str, state: bool):