Files
portal/README.md
Jimmy d5cab2efdf Add multi-panel Pico UDP firmware and Python LED control.
Pico panels get static IPs on 10.1.1.10–14 with per-panel LED counts, Makefile deploy targets, and Python examples for animations, sync tests, and direct Pi SPI control.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-28 22:46:08 +12:00

2.4 KiB
Raw Blame History

portal

WS2812 LED control for Raspberry Pi 5 and Pico panel adapters.

Panel IPs

Five panels on 10.1.1.1010.1.1.14 (panel 0 → .10, panel 4 → .14). Examples drive all 5 by default.

Panel sizes

Panels are 9 rows tall; width varies by panel. Edit PANEL_WIDTH_BY_INDEX in leds/array_config.py:

Panel IP Size LEDs Flash
0 10.1.1.10 9×39 351 make deploy PANEL_ID=0 NUM_LEDS=351
1 10.1.1.11 9×45 405 make deploy PANEL_ID=1 NUM_LEDS=405
2 10.1.1.12 9×45 405 make deploy PANEL_ID=2 NUM_LEDS=405
3 10.1.1.13 9×45 405 make deploy PANEL_ID=3 NUM_LEDS=405
4 10.1.1.14 9×39? 351 make deploy PANEL_ID=4 NUM_LEDS=351

Panel 4 may be 38 or 39 wide — find the exact width:

make deploy PANEL_ID=4 NUM_LEDS=387   # 43 cols max for probe
pipenv run python examples/panel_sync_test.py --test width --panel-index 4

Last column that lights → set PANEL_WIDTH_BY_INDEX[4] in leds/array_config.py to column + 1, then re-flash with NUM_LEDS=width×9 (342 for 38, 351 for 39).

Animations render at each panel's own width automatically.

Examples

Pico panel (UDP)

Command What it does
pipenv run python examples/panel_rgb_cycle.py Red / green / blue on all 5 panels
pipenv run python examples/panel_color_test.py One-shot RGB + white test
pipenv run python examples/panel_test.py Layout tests (corners, rows, chase)
pipenv run python examples/panel_sync_test.py Positioning + sync across all panels
pipenv run python examples/panel_animations.py All animations on all panels
pipenv run python examples/panel_animations.py rolling One animation
pipenv run python examples/panel_text.py Show your name
pipenv run python examples/animations.py --panel Same as panel_animations

Single panel only:

pipenv run python examples/panel_animations.py --panel-index 1   # 9×45 @ 10.1.1.11

Pi direct (SPI on GPIO 10)

Command What it does
pipenv run python examples/animations.py All animations on matrix
pipenv run python examples/matrix_demo.py Rainbow only
pipenv run python examples/led_demo.py Dual-strip chase + rainbow

Firmware

make deploy PANEL_ID=0 NUM_LEDS=351
make monitor