PM_G-1 Grid
The off-the-shelf Pimoroni Pico Scroll Pack (a 17×7 white LED matrix + 4 buttons) on a plain Raspberry Pi Pico - sibling to the PM_K-1 Kit and PM_X-1 Explorer, sharing the engine, program-string grammar, and live-sync protocol with the web editor.
What it is
The Pico Scroll Pack (PIM545) plugs straight onto a Raspberry Pi Pico's headers: 119 white LEDs in a 17×7 matrix driven by an IS31FL3731 over I²C (individually brightness-controlled), and 4 buttons (A / B / X / Y). No soldering, no touchscreen, no joystick, no RGB - and no onboard speaker. About 65 × 25 × 10 mm on top of the Pico. Power is over VSYS (USB or battery).
It runs the native Rust firmware (rust/pm-grid), built on the same polymeter engine
(the shared track-format crate) and program strings as the web editor. The 7-row × 17-column
matrix maps directly onto the editor's lane × step pad grid: each lane is a row, each step a column, and
LED brightness encodes accent / normal / ghost. Audio is over USB-MIDI - turn on the editor's
🎹 Device audio to hear the clicks through your computer (the Scroll Pack has no speaker of its own).
Wiring - the Pico Scroll Pack fixed pinout (just press it onto the Pico)
Everything is wired through the header; this is what the firmware reads. Pins verified against Pimoroni's pico_scroll library.
| Component | Pico pins |
|---|---|
| LED matrix - 17×7 white, IS31FL3731 (I²C @ 0x74) | |
| SDA / SCL | GP4 / GP5 |
| Buttons (digital, pull-up) | |
| A (play/stop) / B (track) | GP12 / GP13 |
| X (+bpm) / Y (-bpm) | GP14 / GP15 |
| Audio - over USB-MIDI (the Scroll Pack has no speaker) | |
Controls & views
| Button | Tap | Hold |
|---|---|---|
| A | play / stop | cycle view (Ticker → Grid → Pendulum) |
| B | next track | next set list |
| X | tempo +1 | repeat (+5 after ~1.5 s) |
| Y | tempo -1 | repeat (-5 after ~1.5 s) |
| View | What the 17×7 matrix shows |
|---|---|
| Ticker | the track name infinite-scrolls along the left; a beat strip on the top row marks the beats with a bright playhead; the BPM is pinned right, rotated 90° CCW (a hundreds dot-bar + the last two digits). The whole matrix flashes on the downbeat. |
| Grid | lanes as rows, steps as columns; brightness = accent / normal / ghost; a bright playhead column tracks the beat (bars > 17 steps scale to fit - no steps dropped) |
| Pendulum | a column bounces across the bar like a metronome arm, full-height flash on each beat |
The button mapping is deliberately simple (this is a UI prototype) and easy to re-bind in rust/pm-grid/src/main.rs.
Parts
Two off-the-shelf parts, no soldering - ballpark one-off price (USD).
| Part | Qty | ~$ |
|---|---|---|
| Pimoroni Pico Scroll Pack (PIM545) - 17×7 white LED matrix (IS31FL3731) + 4 buttons | 1 | 22 |
| Raspberry Pi Pico - RP2040; pre-soldered headers so the pack presses on | 1 | 5 |
| USB cable - power + flashing (micro-USB) | 1 | 2 |
| Total (one-off) | ≈ $29 |
Reference: Pico Scroll Pack product page · vendor code (pico_scroll).
Firmware - native Rust (flash the .uf2)
The Grid runs native Rust firmware (rust/pm-grid), sharing the same
track-format engine crate as the web editor and the other devices. It's a button-driven LED
metronome: three views (Ticker, Grid, Pendulum), the built-in set lists, tempo ramp +
gap-trainer, and a whole-matrix flash on the downbeat. Audio plays through your computer over
USB-MIDI - the Scroll Pack has no speaker. Flashing is a one-step .uf2 drag (no CircuitPython,
no drive bundle).
Download firmware (pm-grid.uf2) ↓ Source ↗
- Flash it: hold BOOTSEL on the Pico, plug in USB (it appears as the
RPI-RP2drive), and drag pm-grid.uf2 onto it. It flashes and reboots - "PM-G1 GRID" scrolls once, then the Ticker view. - Play through your computer: plug the Pico into your computer, open the editor in Chrome / Edge / Firefox, click 🎹 Device audio, and press A on the device - each click sounds through your speakers over USB-MIDI (GM channel 10).
- Controls: A tap = play/stop, hold = cycle view; B tap = next track, hold = next set list; X / Y = tempo up / down (auto-repeats while held).
Built from rust/pm-grid via its build.sh (RP2040 /
thumbv6m). For development, a Raspberry Pi Debug Probe flashes it and streams logs over
probe-rs + defmt (the pm-grid.elf is served alongside for log decoding).
Live-sync editing, on-device practice log and editor firmware-push are on the roadmap (not in the Rust build yet).
Pairs with the touch-driven PM_K-1 Kit and the button-driven PM_X-1 Explorer - same engine, same programs.json, same web editor.