# portal WS2812 LED control for Raspberry Pi 5 and Pico panel adapters. ## Panel IPs Five panels on `10.1.1.10`–`10.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: ```bash 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: ```bash 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 ```bash make deploy PANEL_ID=0 NUM_LEDS=351 make monitor ```