Datasheet

timing-sensitive operations at the same time, not to mention driving another chain on a
different pin… Our solution: stick to the good ol’ 115k.2 asynchronous serial. Almost every
microcontroller has a UART peripheral capable of easily generating this protocol without
much CPU intervention. Many have more than one. Even a PC with a simple USB-serial
dongle can do that fairly easily. Seems like a win! The only drawback we could see what
with the data rate being relatively low, we run into frame-rate / chain length limitations
(about 60-long chain @ 50 frames/sec). However, at about 1[A] per Pixie, we concluded
that typical chains would not be super-long.
The resulting serial protocol is very simple: the controllers sends a byte-string containing a
color value for each LED in the chain as follows:
<R1>, <G1>, <B1>, <R2>, <G2>, <B2>, <R3>, <G3>, <B3>, …, <Rn>, <Gn>, <Bn>, <at least 1ms of silence>
Each of <Xi> is a byte representing the brightness of a single color of a single Pixie, where 0
is off, 255 is fully on, and everything is between is, er, everything in between. <R1>, <G1>,
<B1> will determine the color of the Pixie that is the first in the chain, counting from the
controller end. <R2>, <G2>, <B2> is the next one, etc.
Each Pixie listens on it Din pin for serial data. It will consume the first 3 bytes it sees and
store them. It will then echo any subsequent bytes to its Dout pin (with less than a
microsecond latency). It will keep doing so until it detects a 1ms-long silence on Din. Then,
it will immediately apply (latch) the color values it got and go back to listening for a new
color. This yield a very effective mechanism for addressing LEDs individually and making
sure they all latch at the same time.
Dealing With Supply Noise
Having a chain with multiple nodes constantly switching 1[A] loads is no small feat! Even an
otherwise negligible wire resistance would result in noticeable voltage glitches. Not to
mention wire inductance, which likes sudden current changes even less, and reacts with
furious voltage surges unless dealt with. To make things worse, being a chain-oriented
product, we’re expecting people to use rather long (several meters) wires, which inevitably
have more resistance and inductance. And worse still, the on-chip temperature indicator
that we really really wanted to use is extremely sensitive to the slightest of noise on the
supply. Did we get your attention?
We took several measure to mitigate those issues. First, we made sure the holes for the
supply wires are large enough to fit a 16AWG wire. Thicker wires = less resistive = good.
The PCB traces connecting the input and output supply are super wide for the same
reason.
© Adafruit Industries https://learn.adafruit.com/pixie-3-watt-smart-chainable-led-pixels Page 13 of 27