Since I first saw a TV ambient light in action, I’ve always wanted one. Instead of designing the software, hardware and firmware myself, I decided to borrow from one of the already existing (and working) designs out there. For this, I decided to go with Adalight. Adalight only requires an Arduino (really any type), a string of WS2801 individually addressable LEDs, a power supply for said LEDs, and the accompanying software/firmware. From start to finish, this took me about a week to complete, including waiting for the LEDs in the mail.
My particular TV is a 46″ beast so for this application, I went with a strand of 50 LED “pixels”. Each pixel requires at full on, 60mA. Doing a little math, this tells me that the maximum current this strand would need is 3A. Since I don’t want to run the power supply at full rated current, I decided to go with a 4A power supply. This will give me a nice 1A cushion and help prolong the life of everything (and help prevent possible damage).
I’m not much of an Arduino person (don’t hate me). I think they’re over used for their purpose, however in this case, they are perfectly matched. Let me explain: The computer doesn’t talk to the LEDs directly but it needs a “middleman” to talk to, which in turn talks to the LEDs. Normally its quite easy to interface a micro controller to a PC using the serial port, however, serial ports have become a thing of the past. The closest thing you’ll find on the computer would be a USB port however its much harder to interface a microcontroller to a USB port. There are AVR (and PIC, Freescale, TI, etc) controllers which interface to USB directly but they aren’t breadboard friendly and require a steady hand to solder. Serial to USB converters exist but they would raise the cost and would still require an RS232 to TTL converter. FTDI chips are in the same category (not breadboard friendly, hard to solder, added cost). So now that I rambled on here long enough, let me get to the point; this is a great use for an Arduino because they all have the USB to serial built-in and the smaller model (such as the micro) has one of these USB capable AVR controllers in a breadboard friendly design. Yes, its a bit overpriced, but you pay for the name. The great thing about choosing an Arduino is that the Adalight version provides you with a working sketch to get you started.
I tested everything with wires hanging all over the place which is great to make sure it all works, but in the end, I wanted something that was secure and would survive if a cat finds it’s way behind the TV. I decided to etch a small board which the Arduino micro would plug into and allow it to easily plug into the lights. Since this was such a small and simple board I didn’t go all fancy, after all, it just breaks out the MOSI and clock traces (don’t forget ground). This allows the lights to easily plug into one side of the board and the USB on the other.
Once I was all finished, I couldn’t help but think this needed its own enclosure so I jumped on the computer and drew up a simple box in SketchUp with the cutouts for the LED header and USB. After about 20 minutes, I had a nice printed box and guess what… It fit together on the first try!
Now it was time to think of a way to mount the lights to the TV. I’ve seen many methods online and most rely on duct tape or cardboard and zip ties. I haven’t seen one yet were the TV was in the corner of the room, however I assumed the LEDs would have to be angled back to shine on the walls.
I spent nearly two days trying to figure out the best arrangement for the lights, the angles, the mounting, the material, etc. I finally decided to use half inch angle aluminum. I then gently set the TV down on the couch, screen side down, and began work. I spend a great deal of time trying to figure out the exact length of the aluminum and how it would be connected together. My TV doesn’t have a flat back but rather looks like the Rockies. I wanted to tuck the frame for the lights in as close as I could to the TV backside so I had to make several bends to do so. I also decided to attach the frame to the VESA mounts on the back of the TV since this would provide the best and most secure mounting points.
To connect the aluminum together, I chose to use rivets since they’re easy to use and I had them on hand. Attaching the LEDs to the frame would be a slightly bigger challenge but in the end I chose to drill two holes for each LED and attach them with zip ties. Again, they’re easy and I had them on hand. It took me half a day to measure, cut everything, bend it, drill it, and attach it. I decided to keep a 16×9(ish) ratio so 17 LEDs for the top and bottom, 10 LEDs for the sides. This used all of the 50 LEDs (the 17 LEDs on the top and bottom share the corner LEDs with the sides, so 9+9+16+16=50, yay!).
When the LEDs and frame were attached to the TV, it was a perfect fit. They tucked into the valleys of the back side perfectly and they’re unnoticeable from the side angles. The last part left now is installing and configuring the software that tells the LEDs what color to be.
I chose not to use the Processing software that Adalight uses because it seemed bloated and lacking in features. I first started using Prismatik which worked great out of the box. Configuring all 50 zones for each LED was an absolute pain and tested how well I could precisely move the mouse on a bad surface. It worked great in the desktop and when throwing up pictures. When it came to trying out Windows Media Center, I was disappointed that the LEDs did nothing. I later discovered that due to the hardware acceleration that Media Center uses, the screen capture method that Prismatik employs doesn’t function properly.
This was disappointing until I found another program called AmbiBox. This program claims to work with Media Center (in full screen), however it depends on Playclaw to do the screen capture work. Generally, Playclaw is used to create videos from gameplay. I was hesitant at first to try it but I am very happy with the results. The zone setup process is much better and includes a wizard to make it easier. I just had to input the number of LEDs, the number across the top/bottom and left/right, the starting position and done! It took me a couple minutes to figure out how to get it working with Playclaw and turn off the overlay (fps, time, etc). I was excited to hit fullscreen and see the results, now if only I had a camera that could show how amazing this really looks.