From 12e242724ef8fb03b4ee64290248b01fe6880735 Mon Sep 17 00:00:00 2001 From: jimmy Date: Thu, 30 Oct 2025 21:42:45 +1300 Subject: [PATCH] Add pattern test --- test/patterns.py | 45 ++++++++++++++++++++++++++ test/patterns/bidirectional_scanner.py | 34 +++++++++++++++++++ test/patterns/blink.py | 34 +++++++++++++++++++ test/patterns/color_transition.py | 34 +++++++++++++++++++ test/patterns/color_wipe.py | 34 +++++++++++++++++++ test/patterns/flicker.py | 35 ++++++++++++++++++++ test/patterns/off.py | 24 ++++++++++++++ test/patterns/on.py | 34 +++++++++++++++++++ test/patterns/pulse.py | 36 +++++++++++++++++++++ test/patterns/rainbow_cycle.py | 33 +++++++++++++++++++ test/patterns/scanner.py | 34 +++++++++++++++++++ test/patterns/theater_chase.py | 34 +++++++++++++++++++ 12 files changed, 411 insertions(+) create mode 100644 test/patterns.py create mode 100644 test/patterns/bidirectional_scanner.py create mode 100644 test/patterns/blink.py create mode 100644 test/patterns/color_transition.py create mode 100644 test/patterns/color_wipe.py create mode 100644 test/patterns/flicker.py create mode 100644 test/patterns/off.py create mode 100644 test/patterns/on.py create mode 100644 test/patterns/pulse.py create mode 100644 test/patterns/rainbow_cycle.py create mode 100644 test/patterns/scanner.py create mode 100644 test/patterns/theater_chase.py diff --git a/test/patterns.py b/test/patterns.py new file mode 100644 index 0000000..5e02730 --- /dev/null +++ b/test/patterns.py @@ -0,0 +1,45 @@ +#!/usr/bin/env python3 +import utime +from machine import WDT +from settings import Settings +from patterns import Patterns + + +def run(): + s = Settings() + pin = s.get("led_pin", 10) + num = s.get("num_leds", 30) + + p = Patterns(pin=pin, num_leds=num) + wdt = WDT(timeout=10000) + + # Baseline params + p.set_param("br", 64) + p.set_param("dl", 500) + p.set_param("cl", [(255, 0, 0), (0, 0, 255)]) + p.set_param("n1", 200) + p.set_param("n2", 200) + p.set_param("n3", 1) + p.set_param("n4", 1) + + for name, fn in p.patterns.items(): + if fn is None: + continue + print(name) + p.set_param("pt", name) + + start = utime.ticks_ms() + while utime.ticks_diff(utime.ticks_ms(), start) < 2000: + p.tick() + wdt.feed() + utime.sleep_ms(10) + + p.set_param("pt", "off") + p.tick() + utime.sleep_ms(200) + + +if __name__ == "__main__": + run() + + diff --git a/test/patterns/bidirectional_scanner.py b/test/patterns/bidirectional_scanner.py new file mode 100644 index 0000000..dd2496f --- /dev/null +++ b/test/patterns/bidirectional_scanner.py @@ -0,0 +1,34 @@ +#!/usr/bin/env python3 +import utime +from machine import WDT +from settings import Settings +from patterns import Patterns + + +def run(): + s = Settings() + pin = s.get("led_pin", 10) + num = s.get("num_leds", 30) + + p = Patterns(pin=pin, num_leds=num) + wdt = WDT(timeout=10000) + p.set_param("br", 127) + p.set_param("dl", 50) + p.set_param("cl", [(0, 255, 0), (0, 255, 0)]) + p.set_param("pt", "bidirectional_scanner") + + start = utime.ticks_ms() + while utime.ticks_diff(utime.ticks_ms(), start) < 1500: + p.tick() + wdt.feed() + utime.sleep_ms(10) + + p.set_param("pt", "off") + p.tick() + utime.sleep_ms(100) + + +if __name__ == "__main__": + run() + + diff --git a/test/patterns/blink.py b/test/patterns/blink.py new file mode 100644 index 0000000..9701538 --- /dev/null +++ b/test/patterns/blink.py @@ -0,0 +1,34 @@ +#!/usr/bin/env python3 +import utime +from machine import WDT +from settings import Settings +from patterns import Patterns + + +def run(): + s = Settings() + pin = s.get("led_pin", 10) + num = s.get("num_leds", 30) + + p = Patterns(pin=pin, num_leds=num) + wdt = WDT(timeout=10000) + p.set_param("br", 64) + p.set_param("dl", 200) + p.set_param("cl", [(255, 0, 0), (0, 0, 255)]) + p.set_param("pt", "blink") + + start = utime.ticks_ms() + while utime.ticks_diff(utime.ticks_ms(), start) < 1500: + p.tick() + wdt.feed() + utime.sleep_ms(10) + + p.set_param("pt", "off") + p.tick() + utime.sleep_ms(100) + + +if __name__ == "__main__": + run() + + diff --git a/test/patterns/color_transition.py b/test/patterns/color_transition.py new file mode 100644 index 0000000..448d9e7 --- /dev/null +++ b/test/patterns/color_transition.py @@ -0,0 +1,34 @@ +#!/usr/bin/env python3 +import utime +from machine import WDT +from settings import Settings +from patterns import Patterns + + +def run(): + s = Settings() + pin = s.get("led_pin", 10) + num = s.get("num_leds", 30) + + p = Patterns(pin=pin, num_leds=num) + wdt = WDT(timeout=10000) + p.set_param("br", 64) + p.set_param("dl", 100) + p.set_param("cl", [(255, 0, 0), (0, 255, 0)]) + p.set_param("pt", "color_transition") + + start = utime.ticks_ms() + while utime.ticks_diff(utime.ticks_ms(), start) < 1500: + p.tick() + wdt.feed() + utime.sleep_ms(10) + + p.set_param("pt", "off") + p.tick() + utime.sleep_ms(100) + + +if __name__ == "__main__": + run() + + diff --git a/test/patterns/color_wipe.py b/test/patterns/color_wipe.py new file mode 100644 index 0000000..5531ad6 --- /dev/null +++ b/test/patterns/color_wipe.py @@ -0,0 +1,34 @@ +#!/usr/bin/env python3 +import utime +from machine import WDT +from settings import Settings +from patterns import Patterns + + +def run(): + s = Settings() + pin = s.get("led_pin", 10) + num = s.get("num_leds", 30) + + p = Patterns(pin=pin, num_leds=num) + wdt = WDT(timeout=10000) + p.set_param("br", 64) + p.set_param("dl", 60) + p.set_param("cl", [(0, 0, 255), (255, 0, 0)]) + p.set_param("pt", "color_wipe") + + start = utime.ticks_ms() + while utime.ticks_diff(utime.ticks_ms(), start) < 1500: + p.tick() + wdt.feed() + utime.sleep_ms(10) + + p.set_param("pt", "off") + p.tick() + utime.sleep_ms(100) + + +if __name__ == "__main__": + run() + + diff --git a/test/patterns/flicker.py b/test/patterns/flicker.py new file mode 100644 index 0000000..002efcb --- /dev/null +++ b/test/patterns/flicker.py @@ -0,0 +1,35 @@ +#!/usr/bin/env python3 +import utime +from machine import WDT +from settings import Settings +from patterns import Patterns + + +def run(): + s = Settings() + pin = s.get("led_pin", 10) + num = s.get("num_leds", 30) + + p = Patterns(pin=pin, num_leds=num) + wdt = WDT(timeout=10000) + p.set_param("br", 127) + p.set_param("dl", 100) + p.set_param("cl", [(255, 136, 0), (255, 136, 0)]) + p.set_param("n1", 10) + p.set_param("pt", "flicker") + + start = utime.ticks_ms() + while utime.ticks_diff(utime.ticks_ms(), start) < 1500: + p.tick() + wdt.feed() + utime.sleep_ms(10) + + p.set_param("pt", "off") + p.tick() + utime.sleep_ms(100) + + +if __name__ == "__main__": + run() + + diff --git a/test/patterns/off.py b/test/patterns/off.py new file mode 100644 index 0000000..f429208 --- /dev/null +++ b/test/patterns/off.py @@ -0,0 +1,24 @@ +#!/usr/bin/env python3 +import utime +from machine import WDT +from settings import Settings +from patterns import Patterns + + +def run(): + s = Settings() + pin = s.get("led_pin", 10) + num = s.get("num_leds", 30) + + p = Patterns(pin=pin, num_leds=num) + wdt = WDT(timeout=10000) + p.set_param("pt", "off") + p.tick() + wdt.feed() + utime.sleep_ms(200) + + +if __name__ == "__main__": + run() + + diff --git a/test/patterns/on.py b/test/patterns/on.py new file mode 100644 index 0000000..9c42609 --- /dev/null +++ b/test/patterns/on.py @@ -0,0 +1,34 @@ +#!/usr/bin/env python3 +import utime +from machine import WDT +from settings import Settings +from patterns import Patterns + + +def run(): + s = Settings() + pin = s.get("led_pin", 10) + num = s.get("num_leds", 30) + + p = Patterns(pin=pin, num_leds=num) + wdt = WDT(timeout=10000) + p.set_param("br", 64) + p.set_param("dl", 120) + p.set_param("cl", [(255, 0, 0), (0, 0, 255)]) + p.set_param("pt", "on") + + start = utime.ticks_ms() + while utime.ticks_diff(utime.ticks_ms(), start) < 800: + p.tick() + wdt.feed() + utime.sleep_ms(10) + + p.set_param("pt", "off") + p.tick() + utime.sleep_ms(100) + + +if __name__ == "__main__": + run() + + diff --git a/test/patterns/pulse.py b/test/patterns/pulse.py new file mode 100644 index 0000000..67073f8 --- /dev/null +++ b/test/patterns/pulse.py @@ -0,0 +1,36 @@ +#!/usr/bin/env python3 +import utime +from machine import WDT +from settings import Settings +from patterns import Patterns + + +def run(): + s = Settings() + pin = s.get("led_pin", 10) + num = s.get("num_leds", 30) + + p = Patterns(pin=pin, num_leds=num) + wdt = WDT(timeout=10000) + p.set_param("br", 255) + p.set_param("dl", 100) + p.set_param("cl", [(255, 255, 255), (255, 255, 255)]) + p.set_param("n1", 200) + p.set_param("n2", 200) + p.set_param("pt", "pulse") + + start = utime.ticks_ms() + while utime.ticks_diff(utime.ticks_ms(), start) < 1500: + p.tick() + wdt.feed() + utime.sleep_ms(10) + + p.set_param("pt", "off") + p.tick() + utime.sleep_ms(100) + + +if __name__ == "__main__": + run() + + diff --git a/test/patterns/rainbow_cycle.py b/test/patterns/rainbow_cycle.py new file mode 100644 index 0000000..7c7b7ee --- /dev/null +++ b/test/patterns/rainbow_cycle.py @@ -0,0 +1,33 @@ +#!/usr/bin/env python3 +import utime +from machine import WDT +from settings import Settings +from patterns import Patterns + + +def run(): + s = Settings() + pin = s.get("led_pin", 10) + num = s.get("num_leds", 30) + + p = Patterns(pin=pin, num_leds=num) + wdt = WDT(timeout=10000) + p.set_param("br", 64) + p.set_param("dl", 100) + p.set_param("pt", "rainbow_cycle") + + start = utime.ticks_ms() + while utime.ticks_diff(utime.ticks_ms(), start) < 1500: + p.tick() + wdt.feed() + utime.sleep_ms(10) + + p.set_param("pt", "off") + p.tick() + utime.sleep_ms(100) + + +if __name__ == "__main__": + run() + + diff --git a/test/patterns/scanner.py b/test/patterns/scanner.py new file mode 100644 index 0000000..37f75e4 --- /dev/null +++ b/test/patterns/scanner.py @@ -0,0 +1,34 @@ +#!/usr/bin/env python3 +import utime +from machine import WDT +from settings import Settings +from patterns import Patterns + + +def run(): + s = Settings() + pin = s.get("led_pin", 10) + num = s.get("num_leds", 30) + + p = Patterns(pin=pin, num_leds=num) + wdt = WDT(timeout=10000) + p.set_param("br", 127) + p.set_param("dl", 50) + p.set_param("cl", [(0, 255, 0), (0, 255, 0)]) + p.set_param("pt", "scanner") + + start = utime.ticks_ms() + while utime.ticks_diff(utime.ticks_ms(), start) < 1500: + p.tick() + wdt.feed() + utime.sleep_ms(10) + + p.set_param("pt", "off") + p.tick() + utime.sleep_ms(100) + + +if __name__ == "__main__": + run() + + diff --git a/test/patterns/theater_chase.py b/test/patterns/theater_chase.py new file mode 100644 index 0000000..576c206 --- /dev/null +++ b/test/patterns/theater_chase.py @@ -0,0 +1,34 @@ +#!/usr/bin/env python3 +import utime +from machine import WDT +from settings import Settings +from patterns import Patterns + + +def run(): + s = Settings() + pin = s.get("led_pin", 10) + num = s.get("num_leds", 30) + + p = Patterns(pin=pin, num_leds=num) + wdt = WDT(timeout=10000) + p.set_param("br", 64) + p.set_param("dl", 100) + p.set_param("cl", [(255, 255, 255), (0, 0, 0)]) + p.set_param("pt", "theater_chase") + + start = utime.ticks_ms() + while utime.ticks_diff(utime.ticks_ms(), start) < 1500: + p.tick() + wdt.feed() + utime.sleep_ms(10) + + p.set_param("pt", "off") + p.tick() + utime.sleep_ms(100) + + +if __name__ == "__main__": + run() + +