Addressable RGB LED Strip

ledrgb

[Synoptic Labs] stumbled upon an RGB light strip with individually-controllable LEDs. The strip uses 5 volts and is controlled by an HL1606. Because the strips are hard to find, this chip is mostly undocumented and he had trouble driving the strip. He was unable to get it working until he met with [John Cohn], who had previously reverse-engineered the serial protocol. Working together, they released a library for the Arduino to drive the strip. So far, the library only supports fading each LED, the only known functionality. If more strips like these were available, constructing LED matrices would be much easier. Embedded below is a video of the strip fading through the rainbow.

[youtube http://www.youtube.com/watch?v=ydVPq7UGVZc%5D

[Related:  LED ambient light strips]

50 thoughts on “Addressable RGB LED Strip

  1. Really nice…I was glad to skim through the code and see how they work. Was surprised to notice that you can’t actually set each color LED to a specific color, they’re either full on or full off, or fading. Would have been pretty easy for the chip makers to use individual registers for each color, like the DM413 in a lot of RGB strings, or the A6281 in the ShiftBrite. So, this strip is really close to the holy grail, but not quite there.

  2. johncohn,

    It seems they already have a controller for this chip with 83 built in patterns?

    Could be worth a look.

    TBH I know nothing of electronics, but this has me excited, it’s exactly what I want. Would it be possible to power from a computer PSU and implement the algorithm to address less leds (manufacturer says you can cut them off two at a time and tell this to the controller – min 16 max 255 leds addressable).

    http://www.coolight-led.com/Products.asp?Id=130

    You can email me using my username @gmail.com if you like.

    Thanks

  3. I live in Shenzhen and often go to the Electronics Market here (HuaQianBei). If anyone is interested in these strips, I’ll be tracking down the factory guys to discuss an order of just a few of them.

    If you are interested in getting one just shoot me a message. You can contact me at erikseverin at y a h o o dot com

    Obviously, the more items ordered, the cheaper the individual price for each one.

    cheers

  4. @mark:

    That looks like the right strip. However one thing that catches my eye is that they say you need 12V to drive the strip. Judging by the video I think that’s a mistake and that the strip itself is actually running at 5V (perhaps the controller uses 12V). I’ve seen addressable strips constructed that use 12V but, in order to use that high of a voltage, the strips have to be built where you can only control every *3* LED’s. I.e. you can’t control each individual LED but only groups of 3 LEDs.

    Anybody wanting to order from these guys should make sure to have them confirm that the strip itself uses 5V, otherwise they may be disappointed.

  5. I was tempted to investigate this idea further but it looks as if you can’t do proper colour mixing, at least the firmware says ‘Full On/Full Off/Colour fade’

    I’m currently building an I2C colour string that allows 24 bit colour mixing.

  6. interesting, might also be possible to make a video wall using these.

    Wonder why they don’t just mount the micro under the LED, wafer style. Much more space efficient and tougher to boot.

    -A

  7. @andre

    It would appear to be a 7 colour LED wall, as the led’s can only maintain a static colour if they are fully on or off. (according to arduino firmware. datasheet in japanese doesn’t help)

  8. Ah, sorry about the video snafu. For some reason, youtube corrupted the first few seconds of the video I originally uploaded. As an attempt to fix this I reuploaded the video (which youtube encoded fine) and then deleted the old, corrupted video, breaking the link in the process.

    My bad.

  9. @mark

    You can stop the LEDs in mid-fade by controlling the number of pulses you put on the S-I line. Each pulse steps the fade by 1/128th or 1/64th (depending on the 2X bit in the command that the LED has loaded).

    But failing that, there’s nothing stopping you from bit-banging your own PWM as you would a shift register, ignoring the fade commands entirely, provided your chain is short enough and your controller fast enough.

    All in all I think there’s a lot of possibility for creatively driving these chains to get more functionality out of them than you would normally think possible. Certainly, there are some pretty strict limitations and you’ll never be able to get full high-bit color mixing control out of them, but I think there’s a lot of creative hack potential if you’re willing to think like an Amiga demo coder.

  10. xander,

    I can see hack potential if you used bit-bang pwm, but the extra cpus needed is awkward. Perhaps you could try making a message display, 8 * 32 say using 1 cheap cpu per line. You would probably need in the area of 1mhz bit rate (for 24 bit color), so a dsPic running at 40MIPS could work, arduino is a tad slow if you want 24 bit color.

  11. These strips seem many intended for architectural use or signage. I would find them much more useful for displays if they had a smaller LED pitch–say 100 LEDs per meter or less.

  12. I have an idea for a 3D model that would show a replay of certain events. Does anyone have the specific details on the communication protocol with each LED and how they are addressed? I would need to control each individual LED and color, intensity is a desirable bonus.

  13. I you can use them with DMX or a SPI signal. the controllers they come with are expensive and quite limited but you can use an DMX to SPI controller for them instead, i have a few in stock (not on the website but they are the same price as the dmx controllers) but i don’t have any of the strips to try them on and each decoder has 96 DMX output channels but you can connect more decoders to get more channels.

  14. The LPD-6803 appears suitable for video and perhaps better for the POV strip application I have in mind. The only sources of information on the web I have found on this chip so far are:

    http://translate.google.co.jp/translate?hl=en&ie=UTF-8&oe=utf-8&u=http://www.mikrocontroller.net/topic/152816&twu=1&client=firefox-a (translated from German)

    http://www.mikrocontroller.net/attachment/59878/LPD6803.pdf (in Chinese)

    and some documents I have not yet registered to see on pudn.com

    This would be my ideal platform to program for on Arduino, so any comments or advice on how plausible this chip looks to control would be gladly appreciated!

  15. There are other IC varieties of pixel RGB leds which have 32 controllable shades per channel which I am currently looking for programming information on.

    In particular LPD-6803 based “pixel rgb led” modules and controllers appear common when searching the web. These are suitable for video and perhaps better for the POV strip application I have in mind. The only sources of information on the web I have found on this chip so far are:

    http://translate.google.co.jp/translate?hl=en&ie=UTF-8&oe=utf-8&u=http://www.mikrocontroller.net/topic/152816&twu=1&client=firefox-a (translated from German)

    http://www.mikrocontroller.net/attachment/59878/LPD6803.pdf (in Chinese)

    and some documents I have not yet registered to see on pudn.com

    This would be my ideal platform to program for on Arduino, so any comments or advice on how plausible this chip looks to control would be gladly appreciated!

  16. Thank-you so much for all the information!
    I’m wondering if someone has tried bypassing the custom chip commands and outputting directly to the pwm.
    I would be really grateful for information about what exactly is required from say the Arduino end to drive your own colour signal.
    Also the information about the latency involved in passing such a signal through the strip would be greatly appreciated!

  17. From what I can tell the HL1606 based strips are kinda janky because they don’t take a simple instruction such as “this pixel, be this exact color”. Any schemes that try to do that with this type strip have to hack the built-in fade feature of the chip and stop the fade at the desired color wanted. So I imagine in bigger scale applications you’d run into lag/latency issues as it takes that much more time to just get the pixel to be the desired color.

    The LPD6803 seems to be a more capable chip, and there is a new revision of it, the LPD1101. All this stuff is hard to get info on as it seems limited within the scope of Chinese industry, i.e. Chinese datasheets and websites.

  18. If you are interested in these strips.

    I supply them.

    I also have standard controllers, these have 84 programs and speed adjustment.

    If you are interested, mail me at nando(at)LNSound(dot)nl

    price of the strip is 25 euro’s per meter, 40 leds/m

  19. that is the color changing LED Strip, and need a LED RGB controller ,which is used to perform a wide array of creative lighting options for any situation. Whether blue, red or green light, this multi-color strip light will deliver consistent, fantastic results. this type of led strip usually run dc12v, 5V type is rare, I haven’t seen by now. one reel (16.4ft) of this kinds of led strip is about 128 dollars(http://www.bestlightingbuy.com/smd-5050-color-changing-brighter-led-strip-300-leds-16-4ft-reel.html), if 160 dollars, it is a little expensive.

  20. Hi, late to the party and just starting to learn….is it possible to control the leds individually? I want to have 4 red and then a blue in the strip. Is this possible with the arduino uno controlling the strip? Thanks

  21. Hey there would you mind letting me know which hosting company you’re using? I’ve loaded your blog in 3 completely different browsers and I must say this blog loads a lot quicker then most. Can you suggest a good hosting provider at a honest price? Many thanks, I appreciate it!

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.