From 46916ce7814b33829ae844e6ab6a1e54a8517e64 Mon Sep 17 00:00:00 2001 From: Geens Date: Wed, 7 Aug 2024 19:30:39 +0200 Subject: [PATCH] Clean up chaser.py because AI doesn't follow instructions well --- src/chaser.py | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/src/chaser.py b/src/chaser.py index e412990..5813b35 100644 --- a/src/chaser.py +++ b/src/chaser.py @@ -28,7 +28,8 @@ class Chaser: 11, # Second display bottom segment 3, 4, 5 # First display remaining segments ] - self.last_update_time = time.time() + self.state_change_time = time.time() + self.time_in_current_state = 0 def update_state_machine(self, hardware: Hardware) -> None: """ @@ -51,15 +52,23 @@ class Chaser: elif hardware.get_button_3(): next_state = self.State.CHASING self.current_led = 0 - elif time.time() - self.last_update_time > 0.1: # 100ms delay + elif self.time_in_current_state > 0.1: self.current_led = (self.current_led + 1) % len(self.chaser_sequence) - self.last_update_time = time.time() + # Time calculation + if next_state != self.current_state: + self.state_change_time = time.time() + self.time_in_current_state = 0 + else: + self.time_in_current_state = time.time() - self.state_change_time self.current_state = next_state # Outputs - for i in range(32): - hardware.set_led(i, False) - - if self.current_state == self.State.CHASING: - hardware.set_led(self.chaser_sequence[self.current_led], True) + match self.current_state: + case self.State.IDLE: + for i in range(32): + hardware.set_led(i, False) + case self.State.CHASING: + for i in range(32): + hardware.set_led(i, False) + hardware.set_led(self.chaser_sequence[self.current_led], True) \ No newline at end of file