Skip to content
Guides › NeoPixel shapes

NeoPixel shapes

A NeoPixel light isn't "N pixels in a line". It's whatever you wired to that pin, in the order the data flows. Describe it once, and every effect follows your real layout.

Maybe your dome light is a jewel, then a ring on the same wire; maybe a logic display is five rows of different lengths. Effects need to know that to mean anything: “around” should go round your ring, “up” should go up your panel. The Shape tab of a NeoPixel light’s editor is where you say so.

  1. Start from the template closest to what you have.
  2. Adjust each piece’s pixel count, and where the data enters it, in the order the data wire reaches them. + Add a piece adds one.
  3. Press Save shape. The light is rebuilt at its new length on the spot, with no restart.
  4. Press Identify and check the real lights match your drawing.

A shape is up to 8 pieces, in data order. (The app calls them pieces; its help, and the firmware, say segments.)

Piece What it is
strip A straight run of pixels.
ring One circular ring.
jewel A small cluster with a centre pixel.
rings Concentric rings on one board.
matrix A regular grid panel.
rows Rows of different lengths, like many logic displays.
single One lone pixel.

A light with no shape behaves as a plain strip of its pixel count, and the Shape tab says so.

Effects that travel need to know which way is “forward” on your shape. The Moves control on a layer picks it:

Moves Direction Best for
Along path The data order, first pixel to last. Strips.
Up / down Vertically across the shape. Panels and stacked rows.
Around center Round and round. Rings and jewels.
Outward From the centre out. Concentric rings, ripples.

Wiring order is the thing people get wrong, and it’s invisible until an effect animates badly. Identify walks the real lights in data order: the first pixel goes red, the last goes blue, and a white dot steps between them, dimming the pixels it has passed.

It outranks presets and even the master switch (a test you can’t see would be no use), and stops after 60 seconds, when you save a shape, or on failsafe.

If the shape is right but motion still looks wrong, check the layer’s Moves setting.

The Scrolling Text effect draws up to 64 letters, digits, spaces and punctuation across a matrix or rows piece. It only appears for a layer on such a piece, and a preset can have one text layer, with other layers running underneath.

Setting What it does
Mode Scroll left or right: a marquee. Roll up or down: lines roll past like credits. Static: stands still in the middle (and scrolls if it’s too long). Word by word: one word at a time, held in the middle.
Font Standard, or Aurebesh: type ordinary letters and they’re shown in Aurebesh, digits as Aurebesh numerals. A checkbox lets ch, ae, eo, kh, ng, oo, sh and th use their single Aurebesh letters.
Font size Picked for you: the tallest that fits (3×5 from 5 rows, 5×7 from 7, 5×7 doubled from 14).
Repeat Forever, or a number of times. After the last, the text layer goes dark and the layers under it keep running.
Hold / Show for Word by word: how long each word stays. Static: how long the text stays.
Colours, speed Text and background colour (black lets layers underneath show through), and speed: about 2 to 30 columns a second.

On a rows board the text uses a grid as wide as the longest row; shorter rows simply lose the edge columns.

To show a one-off message without saving a preset, use Send a message on Button Pad.

Why there’s a 150-pixel limit for the curious

A WS2812-class pixel takes 30 µs on the wire, and sending blocks until it’s done. Four chains are sent one after another, so four full chains of 150 already use most of a 20 ms frame. Much more and the frame rate drops visibly; faster code can’t fix it, because it’s the wire protocol.

Saving a shape stops Identify, an on-device preview and a live message on that light, since each was drawn for the old shape. If the board hasn’t enough memory for the new length, the save says so and the old shape stays.

  • An effect runs the wrong way or in the wrong place: run Identify and compare. See Troubleshooting.
  • The save says it can’t apply: see Troubleshooting.