#!/usr/bin/env python3 """Standalone blink pattern demo (WDT-fed tick loop). Run on device:: mpremote connect run tests/patterns/blink.py """ import sys import utime def _bootstrap_import_path(): """Find ``settings`` / ``presets`` on device or when run via mpremote.""" try: import uos as os except ImportError: import os candidates = [] try: here = __file__.rsplit("/", 1)[0] if here: candidates.append(here) tests = here.rsplit("/", 1)[0] if tests: candidates.append(tests) root = tests.rsplit("/", 1)[0] if root: candidates.append(root) candidates.append(root + "/src") except NameError: pass for p in (".", "..", "/", "src", "/src"): candidates.append(p) for p in candidates: if p and p not in sys.path: sys.path.insert(0, p) _bootstrap_import_path() from machine import WDT # noqa: E402 from settings import Settings # noqa: E402 from presets import Presets # noqa: E402 def _run_ms(presets, wdt, duration_ms, sleep_ms=10): start = utime.ticks_ms() while utime.ticks_diff(utime.ticks_ms(), start) < duration_ms: wdt.feed() presets.tick() utime.sleep_ms(sleep_ms) def main(): settings = Settings() presets = Presets(settings.get("led_pin", 10), settings.get("num_leds", 30)) wdt = WDT(timeout=10000) presets.edit( "test_blink", { "p": "blink", "b": 64, "d": 200, "c": [(255, 0, 0), (0, 0, 255)], }, ) presets.select("test_blink") _run_ms(presets, wdt, 1500) if __name__ == "__main__": main()