It would not be a hacker-ish innovation project without some blinkiness. It's almost mandatory. So my next stop: Adafruit, for some NeoPixels.
What's interesting about NeoPixels: each LED actually contains three LEDs (red, green, blue), and each one is addressable.
"Addressable" -- a word, and a concept, that has grown with our times.
The origin, of course: someone who could be addressed, or maybe who had an address. But the computer use has taken over with powerful new levels of specificity. Now the term is used to indicate new levels of targeting, from LEDs to individuals.
"Addressable markets" -- mean anything to you? Big data and IoT have come together to enable companies to target millions of people individually. They are addressable.
So I digress, but NeoPixels are of our time.
NeoPixels is actually Adafruit’s brand name for their products that use more generic technologies: WS2812, WS2811, and SK6812 LEDs.
This cluster of related technologies, let's just call them "WS2812" for short, are used in thousands of products today, as well as in DIY and maker electronics. They allow you to have as many LEDs connected in series as you want, all controlled by a single wire from a microcontroller, in my case the Particle Photon.
Each NeoPixel LED package contains a tiny circuit with the controller chip, and an individual LED for each color. The WS2812 chip takes care of the LED driving, and we just send it data to tell it what the LED color should be. Each LED receives its data, then passes the next packet of data along to the next one.
Here's what a WS2812/NeoPixel looks like up close.
And here's Limor "Lady Ada" Fried explaining how these NeoPixels can be herded into varieties of blinkiness.
I started small, with the NeoPixel Ring.
Once I got my confidence, I moved up to the most popular type of NeoPixels: flexible LED strips that can be cut to length and fit into all manner of things.
I bought a strip of 30 RGB LED NeoPixels.
The pitch from Adafruit:
There are 30 RGB LEDs per meter, and you can control each LED individually! Yes, that's right, this is the digitally-addressable type of LED strip. You can set the color of each LED's red, green and blue component with 8-bit PWM precision (so 24-bit color per pixel). The LEDs are controlled by shift-registers that are chained up down the strip so you can shorten or lengthen the strip.
But with this expanded scale came power management challenges.
To the Adafruit NeoPixel Uberguide!
Then it took a few nights at Cambridge Hackspace to get both the Ring and the Strip going in two modes: Rainbow and Chase.
Now I just had to get them both running, and add some variations.