In order to make the display [John] modified the original packing material to hold three strands in a six by eighteen grid for a total of 108 pixels. In the video after the break he points out one interesting feature of the strand that we don’t remember from looking at the original hack; each bulb’s address is not fixed, it can be set after power-up. This works the same way as sending color data, except that you just send the address. This makes controlling a grid like this extremely easy from a microcontroller programming standpoint. Once all of the addresses have dropped down the serial bus, you’re ready to start sending color and intensity data packets.

The setup is fast, bright, and beautiful, taking just three pins of an Arduino for control. The only thing holding us back from trying this ourselves is the $150 price tag. But that was before the holiday, and we have heard some whispers about closeout deals on this product.

when will we see QVGA or ultimately 720P Video being shown on a bunch of these sets? It seems they are easy to drive. I mean at QVGA that’s only 76800 pixels and at a lowest price of $55 a set that’s only $84,480.00

Does anyone know of any open source pc software that could be used to take mp3 input and divide it into various channels, like voice, bass, treble; and then output some kind of serial string that the Arduino could process to light the lamps synced to the music?

while this is a cool hack, it’s also kinda silly. If you have all the bulbs in such close proximity, it seems a lot simpler to remove all the hocus pocus and drive them with a matrix. Part of the reason for the cost of these sets is that you need something vaguely ‘smart’ in each bulb.

Thanks for the comments, everybody! Jason, the guy who wrote the code, is currently looking at cleaning it up for release. I’ll put the link here, on my blog, and on the Youtube video description when it goes up.

There’s a lot more that can be done with the code, but it was kind of neat that it was a 48 hour total project, so I left it in the functional state it was on completion. The only changes I made were to add some comments just to make it more easily followed by those interested.

Riney and I have already determined some changes we’ll probably make to the addressMatrix() routine to make it tolerant of strands of differing lengths, etc.