Rust sibling of pico-scroll/app.py — the PM_G-1 'Grid' 17x7 LED metronome on a plain RP2040 Pico (thumbv6m, not the Pico 2). LED-first milestone: - IS31FL3731 driver: vendored bulk 144-byte framebuffer, one I2C block write per frame (port of the CircuitPython Matrix; the is31fl3731 crate isn't used). - Polymeter scheduler driven by track-format::schedule::lane_durs (the cross-impl contract) + per-lane step clocks + tempo ramp + gap-trainer. - 4-button input (A play/stop·hold=view, B next-track·hold=next-setlist, X/Y tempo). - Built-in set lists; 3 views: Ticker (default), Grid, Pendulum. - Ticker (user-designed): name infinite-scrolls left; BPM pinned right rotated 90 CCW = hundreds dot-bar (1 dot/100) + last 2 digits rotated. 130 -> 1 dot + '30'. - Build scaffolding: rp2040-hal 0.10 + boot2, memory.x, build.sh + uf2.py (RP2040 family id). thumbv6m-none-eabi added to rust/Containerfile. Excluded from the host workspace like pm-kit. Compiles clean -> 48 KB pm-grid.uf2. Audio (USB-MIDI; the board has no speaker), live-sync, firmware push, practice log and playback-flow auto-advance are deferred to the next milestone (as on pm-kit). Also: delete COORDINATION.md (solo now); docs/rust-port.md updated with pm-grid status + corrected Grid driver-matrix row. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
20 lines
688 B
TOML
20 lines
688 B
TOML
[package]
|
|
name = "pm-grid"
|
|
version = "0.1.0"
|
|
edition = "2021"
|
|
description = "PM_G-1 'Grid' firmware (RP2040 / Pimoroni Pico Scroll Pack PIM545). 17x7 IS31FL3731 LED metronome — Rust sibling of pico-scroll/app.py."
|
|
|
|
[dependencies]
|
|
rp2040-hal = { version = "0.10", features = ["rt", "critical-section-impl"] }
|
|
rp2040-boot2 = "0.3"
|
|
cortex-m = "0.7"
|
|
cortex-m-rt = "0.7"
|
|
panic-halt = "0.2" # plain Pico is flashed via UF2/BOOTSEL — no probe, so just halt on panic
|
|
embedded-hal = "1"
|
|
track-format = { path = "../track-format" }
|
|
embedded-alloc = "0.6" # track-format parses into Vec/String → needs a global allocator
|
|
|
|
[profile.release]
|
|
opt-level = "s"
|
|
lto = true
|
|
debug = 2
|