Skip to content

Pimoroni Stellar Unicorn

The board as it appears on the Velxio canvas, with its full pin map read live from the simulator (regenerated by scripts/gen-boards.mjs, so it always matches what you can wire).

Pimoroni Stellar Unicorn board

Family: Pro boards · Languages: Arduino C++

Pimoroni’s square Unicorn: 256 RGB LEDs in a 16 x 16 grid filling the front of a 108 x 108 mm board, with a Raspberry Pi Pico 2 W soldered to the back next to a MAX98357 amplifier and a 30 mm speaker, nine tactile buttons, a reset button, two Qw/ST connectors and a JST-PH battery input. A phototransistor sits at the right-hand edge of the front.

Its siblings are the same idea in other shapes — Galactic Unicorn is 53 x 11 and wide, Cosmic Unicorn is 32 x 32. Stellar is the square one.

How the panel is driven, because it is the surprising part: there is no display controller. The RP2350 shifts raw column data into a chain of driver chips one row at a time, then repeats each row 14 times with exponentially growing on-times. That is binary code modulation — the brightness of a pixel is which of the 14 passes it is lit in — and it is how a chip with no PWM to spare paints 14-bit-per-channel gradients at around 300 refreshes a second.

Velxio decodes exactly the buffer that driver builds: the same 24-byte blocks, the same both-axes mirror, the same gamma table, brightness applied before the gamma. So what lights a pixel here is what lights it on the desk, and the LUX buttons dim the panel through the hardware’s own maths. Every example shares a port of Pimoroni’s libraries/stellar_unicorn, including their PIO program.

What runs here: the panel, all nine buttons (click them along the bottom edge), the light sensor on GP28/ADC2, I2C on the Qw/ST pins with Velxio’s demo devices, UART, USB serial, SPI, timers and the chip’s own temperature sensor. Not emulated: audio — the I2S pins toggle, the speaker is silent — and WiFi, because the simulator attaches one PIO peripheral per board and the panel has it.

  • Rainbow — Pimoroni’s rainbow.py: diagonal stripes across all 256 LEDs, with A/B for speed, C/D for stripe width, VOL +/- for hue and LUX +/- for brightness.
  • Fire effect — their fire_effect.py, simulated on a grid taller than the panel so the flames have somewhere to come from.
  • The matrix — their numpy/the_matrix.py: green rain. HELLO NEO.
  • Feature test — their feature_test.py: gradients, a checkerboard, and the panel naming whichever button you hold.
  • Thermometer — their thermometer_pico.py, reading the chip’s own on-die sensor.
  • Clock — their clock.py, with the time coming off the demo DS1307 on the Qw/ST bus instead of NTP.
  • GND
  • 3V3
  • GP4
  • GP5

Every pin above is clickable on the canvas — click one to start a wire. Board-level behavior, quirks and example links live on the family page.