/*@BUILD:include:src/header.html@*/

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

Buildable nowRP2040 (Raspberry Pi Pico)Pimoroni Pico Scroll Pack PIM545~$30

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.

ComponentPico pins
LED matrix - 17×7 white, IS31FL3731 (I²C @ 0x74)
SDA / SCLGP4 / 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
ButtonTapHold
Aplay / stopcycle view (Ticker → Grid → Pendulum)
Bnext tracknext set list
Xtempo +1repeat (+5 after ~1.5 s)
Ytempo -1repeat (-5 after ~1.5 s)
ViewWhat the 17×7 matrix shows
Tickerthe 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.
Gridlanes 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)
Penduluma 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).

PartQty~$
Pimoroni Pico Scroll Pack (PIM545) - 17×7 white LED matrix (IS31FL3731) + 4 buttons122
Raspberry Pi Pico - RP2040; pre-soldered headers so the pack presses on15
USB cable - power + flashing (micro-USB)12
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 ↗

  1. Flash it: hold BOOTSEL on the Pico, plug in USB (it appears as the RPI-RP2 drive), and drag pm-grid.uf2 onto it. It flashes and reboots - "PM-G1 GRID" scrolls once, then the Ticker view.
  2. 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).
  3. 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.

/*@BUILD:include:src/footer.html@*/