Split into pattern and low level methods

This commit is contained in:
2025-09-05 23:29:18 +12:00
parent fc080f7796
commit 44cb35d1aa
2 changed files with 216 additions and 1 deletions

View File

@@ -22,7 +22,8 @@ class Patterns:
"flicker": self.flicker_step,
"scanner": self.scanner_step, # New: Single direction scanner
"bidirectional_scanner": self.bidirectional_scanner_step, # New: Bidirectional scanner
"external": None
"external": None,
"pulse": self.pulse
}
self.selected = selected
# Ensure colors list always starts with at least two for robust transition handling
@@ -394,3 +395,23 @@ class Patterns:
self.pattern_step = 0 # Start moving forward from the first LED
self.last_update = current_time
def pulse(self):
if self.pattern_step == 0:
self.fill(self.apply_brightness(self.colors[0]))
self.pattern_step = 1
self.last_update = utime.ticks_ms()
if utime.ticks_diff(utime.ticks_ms(), self.last_update) > self.delay:
self.fill((0, 0, 0))
if __name__ == "__main__":
import time
from machine import WDT
wdt = WDT(timeout=2000) # Enable watchdog with a 2 second timeout
p = Patterns(pin=10, num_leds=200, color1=(255,0,0), color2=(0,0,255), brightness=127, selected="bidirectional_scanner", delay=50)
p.select("pulse")
for i in range(1000):
p.tick()
wdt.feed()
time.sleep_ms(1)