Bladeren bron

vibrate on alarm

Fabian Peter Hammerle 2 jaren geleden
bovenliggende
commit
67446b3e6c
1 gewijzigde bestanden met toevoegingen van 9 en 3 verwijderingen
  1. 9 3
      vibrating_alarm_m5stickc.py

+ 9 - 3
vibrating_alarm_m5stickc.py

@@ -20,6 +20,7 @@ _LEFT_PADDING = 8
 _ALARM_TIME_PATH = "alarm.json"
 _SCREEN_WIDTH, _SCREEN_HEIGHT = lcd.winsize()
 _AWAKE_SECONDS = 8
+_VIBRATION_MOTOR_PIN = 26
 
 
 def _handle_pending_events():
@@ -105,6 +106,7 @@ class App:
         self._alarm_hour_text_box = None
         self._alarm_minute_text_box = None
         self._battery_status_text_box = None
+        self._vibration_motor_pin = None
 
     def _reschedule_sleep(self, interrupt: bool) -> None:
         if interrupt:
@@ -135,8 +137,11 @@ class App:
 
     def _alarm(self) -> None:
         print("ALARM")
-        utime.sleep(1)  # seconds
-        print("alarm end")
+        for _ in range(3):
+            self._vibration_motor_pin.on()  # type: ignore
+            utime.sleep(0.5)
+            self._vibration_motor_pin.off()  # type: ignore
+            utime.sleep(0.5)
         self._next_alarm_time = self._alarm_config.next_time
 
     def _update_alarm_time(self, event_arg: None) -> None:
@@ -176,7 +181,7 @@ class App:
             _DEFAULT_FONT_COLOR,
             rotate=90,
         )
-        machine.Timer(0).init(
+        machine.Timer(0).init(  # TODO update in main loop
             period=4000,  # ms
             mode=machine.Timer.PERIODIC,
             callback=lambda t: self._clock_text_box.setText(self._format_time()),  # type: ignore
@@ -230,6 +235,7 @@ class App:
         self._setup_clock()
         self._setup_alarm()
         self._setup_battery_status_info()
+        self._vibration_motor_pin = machine.Pin(_VIBRATION_MOTOR_PIN, machine.Pin.OUT)
         btnA.wasPressed(self._button_a_pressed)
         btnB.wasPressed(self._button_b_pressed)
         # not sure whether ext0 would be better