“Civilization advances by extending the number of important operations which we can perform without thinking about them.”

–Alfred North Whitehead

More interesting components make for more interesting devices. This is certainly the case with one of Adafruit Industries’ latest creations — the NeoPixel.

NeoPixel (breadboardable version) (Image:


The idea behind NeoPixels is both simple and brilliant. Make a true-color RGB LED as easy as possible to drive with a microcontroller. Normally, in order to get full color from a RGB LED, you need to send PWM signals to the three signal pins. Controlling this on a small microcontroller with limited resources can be demanding, leading to design compromises like using only the eight basic steady-state RGB colors or only flashing the color intermittently, when the processor has nothing better to do.

With NeoPixels, the PWM functionality has been offloaded onto the LED. NeoPixels have a four-wire interface — and that’s counting ground, power, and signal out. Now running a full-color LED only takes one wire, and takes far less of the processor’s attention. Instead of continually monitoring the RGB pin states, the CPU sends a new color whenever it changes, and goes about its business (or goes to sleep) at other times.

Adafruit has an excellent “Uberguide” to everything NeoPixel. Load an Arduino library or two, and two or three lines of code later, you have color. Interfacing with a PIC is almost as easy once you have a few bit-banging routines written.

NeoPixels can be daisy-chained, too. The signal-out pin of one connects to the signal-in pin on the next one. There’s no practical limit to the number that can be chained this way, if you don’t mind the latency and distribute power and ground. Once a NeoPixel has received its twenty-four bits, it sends all subsequent bits down the line. So the first three bytes sent control the first NeoPixel in the chain, the second three bytes control the color of the second, and so on. (The NeoPixels don’t know and don’t care if anyone is listening downstream, which makes interfacing easy but doesn’t allow for verification.)

They come in single units, strips, rings, panels, and now they’re even available in 5mm and 8mm through-hole.

I love living in the future.

This entry was posted in Arduino, Components, Design, Digital, Electronics, PIC Microcontrollers, Reviews. Bookmark the permalink.

Leave a Reply