An addressable RGB LED strip is like a one pixel high color screen. You can do awesome things with them: crazy lighting effects, information displays and even low resolution video. There are many different types of RGB LED strips on the market. Here is an overview of addressable led strips I evaluated for Stripe. I’ll tell you a bit about different controller chips, electrical specifications and software libraries to help you make a choice.
What is an addressable RGB LED strip?
An addressable RGB LED strip is a long flexible strand of LEDs each of which can be individually set to a certain color (hence: addressable). By varying the level of red, green and blue (RGB) per LED many color combinations can be made. The chips between the LEDs listen to commands from a controller. This can be an Arduino or other microcontroller or a controller specifically designed for LED strips.
The strips come in various configurations. Some run on 12V, others on 5V. Some are splittable every two LEDs, others every three. There are different levels of waterproofing (for outdoor or underwater use) and a varying number of LEDs per meter. The list below is grouped by controller chip.
Most addressable LED strips you find in stores will be based on the HL-1606 chip. They are cheap and ubiquitous. Every HL1606 chip controls two RGB LEDs, so most of these strips will run on 5V and be splittable every 2 LEDs. Good news so far.
For the bad news I only have to quote two fellow bloggers: “I swear the HL in hl1606 stands for hell” (waitingforbigo.com) and “My experiences with the HL1606 are awful” (Marcus from Interactive Matter). Although an Arduino library for the HL1606 is available it is a pain to use. Hooking it up requires four lines. The chip is very simple: it offers only two brightness levels. If you want fading or color mixing, you will have to do it in software.
- Easily available: you can probably buy HL1606 LED strips in a store near you
- The HL1606 chip has low power consumption
- ‘Dumb’ hardware: you’ll have to program some smart software to get the strip to do what you want
The WS2801 is a “3-Channel Constant Current LED Driver With Programmable PWM Outputs”. It allows you to adjust the brightness of every LED in 256 steps using PWM. A WS2801 chip controls three channels, so you need one chip for every RGB LED. Theoretically this means the WS2801 strips can be cut next to every LED, but I haven’t seen any strips where this is the case. The chip runs on 3.3-5.5V.
Strips based on the WS2801 are available at SparkFun where they cost $45 for a meter at the time of writing.
- Smart controller with easy control scheme
- 8 bits, 256 levels per channel, 16.7 million colors total
- English datasheet available
The LPD8806 is a lot like the WS2801 with the following differences: it works from 2.7V up and has six channels allowing it to control two RGB LEDs. The downside is that it only does 7 bit PWM, making 127 brightness levels per LED for up to 21 bit color (2 million colors). There are no English datasheets available and the protocol description is not open. Luckily the folks at Adafruit reverse engineered the protocol and released a LPD8806 Arduino library.
It costs $35 per meter at Adafruit.
- Easy to interface: one data and one clock line
- Only a tiny bit more expensive than HL1606 strips
- No English datasheet available
- No protocol specification available: the code library has been reverse engineered so the implementation is probably not optimal
The three LED strip controllers listed above are the ones you will most easily find. In the future we might see LED strips using controllers from Texas Instruments, NXP or Macroblock providing more brightness levels, lower power consumption and other features. For now, I’ve chosen to use the LPD8806 strips for Stripe as they provide a nice balance between features and cost.
Liked this post? Follow @studiomenting on Twitter.