Skip to content

Add native support for Pimoroni Scroll pHAT HD (IS31FL3731) - #302

Open
Trotter73 wants to merge 1 commit into
rm-hull:mainfrom
Trotter73:add-scrollphathd-support
Open

Add native support for Pimoroni Scroll pHAT HD (IS31FL3731)#302
Trotter73 wants to merge 1 commit into
rm-hull:mainfrom
Trotter73:add-scrollphathd-support

Conversation

@Trotter73

@Trotter73 Trotter73 commented Aug 17, 2026

Copy link
Copy Markdown

Adds a new scrollphathd device class, driven natively over I2C by directly talking to the IS31FL3731 LED matrix controller's register map - not a wrapper around Pimoroni's own scrollphathd library.

  • Register constants live in const.py (new is31fl3731 class), and the protocol/rendering logic lives directly on the scrollphathd device class in device.py, consistent with how max7219/ws2812/apa102 are structured elsewhere in this module.
  • 17x7 grid of individually PWM-dimmable white LEDs (256 brightness levels), addressed via a 32-bit RGBA image, consistent with the apa102/unicornhathd convention of using the alpha channel to set per-pixel brightness.
  • Physical LED addressing (visible x,y -> 144-pixel chip buffer index, and the enable/wiring bitmap) is derived algorithmically rather than hardcoded, and cross-checked against the known-good Pimoroni mapping.
  • Adds tests/test_scrollphathd.py, examples/scrollphathd_demo.py, and documentation updates (README, intro, python-usage, CHANGES).

fixes #100

Adds a new scrollphathd device class, driven natively over I2C by
directly talking to the IS31FL3731 LED matrix controller's register
map - not a wrapper around Pimoroni's own scrollphathd library.

- Register constants live in const.py (new is31fl3731 class), and the
  protocol/rendering logic lives directly on the scrollphathd device
  class in device.py, consistent with how max7219/ws2812/apa102 are
  structured elsewhere in this module.
- 17x7 grid of individually PWM-dimmable white LEDs (256 brightness
  levels), addressed via a 32-bit RGBA image, consistent with the
  apa102/unicornhathd convention of using the alpha channel to set
  per-pixel brightness.
- Physical LED addressing (visible x,y -> 144-pixel chip buffer index,
  and the enable/wiring bitmap) is derived algorithmically rather than
  hardcoded, and cross-checked against the known-good Pimoroni mapping.
- Adds tests/test_scrollphathd.py, examples/scrollphathd_demo.py, and
  documentation updates (README, intro, python-usage, CHANGES).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Support for Scroll pHAT HD

1 participant