Controlling Cheap, Awesome Christmas Lights


[James] was wandering around Walgreens after Christmas and found something very interesting – RGB LED Christmas lights that were individually addressable. At $6.50 for a strand of 15 lights, he just had to buy a few and figure out the control protocol. After all, who can turn down a big, cheap, controllable RGB LED strip?

The packaging for these lights – apparently manufactured by BriteStar – includes a ‘try me’ button that cycles through different light patterns. This button is what initially tipped [James] off to the fact the lights on this strand could be individually controllable. Opening up one of the lights, he found exactly what he wanted: an epoxy blob, two wires for power, and three wires for the signaling.

After checking out this light with a scope and logic analyzer, [James] realized there was a very, very simple protocol going on. Essentially, the entire string functioned as a gigantic shift register, taking the values for one light and pushing it down the string. In looking at the protocol, [James] also discovered] these lights support 16 levels of brightness. Yep, RGB LED Christmas Lights with PWM for under $7. Can’t beat that.

[James] wrote an Arduino library to control these strings and put it up on Github. While your local Walgreens has probably already hidden these lights away in the back of the store, it might be worth asking around to see if they have any left.

13 thoughts on “Controlling Cheap, Awesome Christmas Lights

    1. Which is really just a form factor difference, right? Tie the grounds together and four leads is four leads, you’ve got PWM, so.. you have an RGB pixel, sure it’s bigger than 3 LEDs in a single package, but that may work out better for some applications.

      1. No, I think what Pablo is saying is that each bulb does not have an RGB, each bulb has a single colored LED that has PWM. In his first paragraph he states:

        “These have 15 individually addressable LED lights (3 sets of 5 LEDs arranged as red, green, blue, orange, white).”

        Which makes me think Pablo is right. The first bulb is only ever red, the second bulb is only ever green, etc…

        1. I agree, this is what I was saying, but if you have PWM and can turn two or three of each RGB cluster on at once you still have an RGB pixel, it’s just bigger than if you had a 3 LEDs in a single 3 lead package.

          1. Yes, but that means you only get 5 “pixels” for $6, which means they are $1.30/pixel where as adafruit sells various form factors for around $0.50/pixel with free instructions on how to use them.

    2. Yes, you are correct. I think the HaD article mistook some of what I said in my blog post to mean that they were RGB. They are not RGB but just a single color LED. The string itself has 15 individual lights (LEDs). The first is a red LED, the second light is a green LED and so on. The sets are all arranged in the same order which is handy for creating Christmas light displays.

      1. Yeah, [James]’s screenshot of the logical analyzer with only the “Red”, “Green”, and “Blue” lines (the one used for the HaD article) didn’t help with the confusion. I had to read the article a few times to make sure, myself.

  1. As a suggestion for readers that want to go into controlling individual RGB LEDs, LED strings or strips with the ws2801, ws2811 or similar protocol are much cheaper (I recently got strings of 50 RGB LEDs for $25 on eBay, instead of 15 non-RGB LEDs for $6.50) and are well supported by libraries for the Arduino (see, e.g., Adafruit’s Neopixels).

  2. “Icicle Light Show” by the same manufacturer nets 18 white serial LED’s, 30 always-on LED’s, 500ma 5V power supply (four wires out – the two thick ones only connect to the power socket for the follow-on chain and are presumably AC, while the lights are all on the two thin lines), and a battery holder for 3 AAA batteries attached to a button/timer breakout that will provide power for 19 seconds. Default program (for first LED in chain) is to turn on for about a quarter of a second, appearing to be followed by “off” 7 times to make the drip effect, with “drips” about every two seconds.

    The daisy-chain power supplies are an intriguing idea: I think it just solved the problem of how to have the kids share a power point for their electronics projects. With neither of them being able to brown-out the other! According to the box, up to thirty of the chains can be connected together.

    Arduino fans: 30 arduinos with *separate* power supplies running from one outlet, with a 12′ spacing between power supplies. Further ideas may be provided by noting the box is marked: “Indoor/outdoor light set”.

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.