From e0dea1fbcecf037c29eaf70f2729e04176fd5e6a Mon Sep 17 00:00:00 2001 From: Laurent Date: Tue, 30 Dec 2025 22:46:35 +0100 Subject: [PATCH] Add button handler --- esp32-wifi/button_handler.py | 45 ++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 esp32-wifi/button_handler.py diff --git a/esp32-wifi/button_handler.py b/esp32-wifi/button_handler.py new file mode 100644 index 00000000..7ec31d9f --- /dev/null +++ b/esp32-wifi/button_handler.py @@ -0,0 +1,45 @@ +import _thread +from typing import Callable +from machine import Pin +import time + +class ButtonHandler: + def __init__(self, pin : int, action : Callable[[], None]): + self.button = Pin(pin, Pin.IN, Pin.PULL_UP) + self.action = action + self._pressed = False + _thread.start_new_thread(self._listen, ()) + + def _listen(self): + while True: + if not self.button.value(): + if not self._pressed: + self._pressed = True + self.action() + else: + self._pressed = False + time.sleep(0.1) + + +if __name__ == "__main__": + def on_press(): + print("Button action triggered") + + btn = ButtonHandler(14, on_press) + + while True: + time.sleep(1) + + +"""# Track button state +button_pressed = False + +while True: + if not button.value(): # Button pressed (active low) + if not button_pressed: + button_pressed = True + print("Button pressed! Action triggered.") # Replace with your action + else: + button_pressed = False # Reset when button released + + time.sleep(0.01) # Small debounce delay""" \ No newline at end of file