From b2ce505c27ed57bfa0a20c20d2744e33eb6eae54 Mon Sep 17 00:00:00 2001 From: Laurent Date: Sun, 4 Jan 2026 20:42:52 +0100 Subject: [PATCH] Add buzzer and led support --- rpi/hardware/buzzer/__init__.py | 0 rpi/hardware/buzzer/buzzer.py | 20 ++++++++++++++++++++ rpi/hardware/led/__init__.py | 0 rpi/hardware/led/led.py | 15 +++++++++++++++ rpi/services/clock_service.py | 2 +- rpi/services/game_service.py | 8 ++++++++ 6 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 rpi/hardware/buzzer/__init__.py create mode 100644 rpi/hardware/buzzer/buzzer.py create mode 100644 rpi/hardware/led/__init__.py create mode 100644 rpi/hardware/led/led.py diff --git a/rpi/hardware/buzzer/__init__.py b/rpi/hardware/buzzer/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/rpi/hardware/buzzer/buzzer.py b/rpi/hardware/buzzer/buzzer.py new file mode 100644 index 00000000..c9c05885 --- /dev/null +++ b/rpi/hardware/buzzer/buzzer.py @@ -0,0 +1,20 @@ +import _thread +import time + +import grovepi + +class Buzzer: + + _pin : int + + def __init__(self, pin : int): + self._pin = pin + grovepi.pinMode(self._pin, "OUTPUT") + + def beep(self, duration = 1): + _thread.start_new_thread(self._beep, (duration,)) + + def _beep(self, duration = 1): + grovepi.digitalWrite(self._pin, 1) + time.sleep(duration) + grovepi.digitalWrite(self._pin, 0) \ No newline at end of file diff --git a/rpi/hardware/led/__init__.py b/rpi/hardware/led/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/rpi/hardware/led/led.py b/rpi/hardware/led/led.py new file mode 100644 index 00000000..d53fac83 --- /dev/null +++ b/rpi/hardware/led/led.py @@ -0,0 +1,15 @@ +import grovepi + +class Led: + + _pin : int + + def __init__(self, pin : int): + self._pin = pin + grovepi.pinMode(self._pin, "OUTPUT") + + def on(self): + grovepi.digitalWrite(self._pin, 1) + + def off(self): + grovepi.digitalWrite(self._pin, 0) \ No newline at end of file diff --git a/rpi/services/clock_service.py b/rpi/services/clock_service.py index d6e7ffa3..fb8aa1e3 100644 --- a/rpi/services/clock_service.py +++ b/rpi/services/clock_service.py @@ -14,7 +14,7 @@ class ClockService: def __init__(self): self.screen = Screen() self.screen.enableBackground() - self.screen.displayMessage("Waiting for start...") + self.screen.displayMessage("Waiting...") def start(self, time_control : int, increment : int ): self.white_clock = self.__init_clock(time_control, increment) diff --git a/rpi/services/game_service.py b/rpi/services/game_service.py index 085a8a97..719f2d5c 100644 --- a/rpi/services/game_service.py +++ b/rpi/services/game_service.py @@ -1,3 +1,5 @@ +from hardware.buzzer.buzzer import Buzzer +from hardware.led.led import Led from models.exceptions.ServiceException import ServiceException from services.clock_service import ClockService from services.detection_service import DetectionService @@ -8,11 +10,15 @@ class GameService: _detection_service : DetectionService _clock_service : ClockService _has_started : bool + _led : Led + _buzzer : Buzzer def __init__(self): self._detection_service = DetectionService() self._clock_service = ClockService() self._has_started = False + self._led = Led(7) + self._buzzer = Buzzer(6) def start(self, white_name, back_name, time_control : int, increment : int ) -> None: if self._has_started : @@ -20,10 +26,12 @@ class GameService: self._clock_service.start(time_control, increment) self._clock_service.set_on_terminated(self.stop) self._has_started = True + self._led.on() def stop(self): self._clock_service.stop() self._detection_service.stop() + self._buzzer.beep() self._has_started = False def make_move(self) -> tuple[bytes, str] | None: