Google Analytics

Friday, December 9, 2016

DIY Ambilight version 3.1 (and 3.0)

Hey everyone!  I've updated my DIY Ambilight and wanted to share some of the details!



In 2011 I published my instructions for a DIY Ambilight.  This was a few months before Phillip Burgess published instructions on Adafruit's site.  So while I may have been one of the first to build this, others certainly did a MUCH better job than me.

I wanted to put instructions out for anyone that is is looking to build their first one or wanting to upgrade the one that they already have.  I'm really happy with the LED mount that I was able to put together and wanted to share that as well.  Now on to the tech!

I recently got a new TV which made it necessary to upgrade my DIY Ambilight. I had strand of 25 LEDs, but I added another 50 which necessitated a new build.  The display is 44.4" x 25.8" so I decided to make the LED mount roughly 40" x 23" to center on to the back of the display.  I used choice lumber from Lowe's for its finish and light weight.  The boards I used were 1x2s which are effectively 3/4" x 1 1/2".

Just like practically any other project like this, we start with an Arduino sketch.  I had some serious flickering issues with Adafruit's LEDStream sketch and started googling for a solution.  I tried changing the timing to a lot of different values with limited success.  Somewhere (and I cannot find it again) someone had posted a copy of the LEDStream sketch modified to use the FastLED library.  I found that it worked flawlessly.  If I track down the original author will will certainly give them credit.  You can find the modified file here: LEDStream with FastLED lib.

Once you have that loaded on your Arduino, you can hook up your LED strand and start pushing values.  I use boblight still and you can find an amazing Boblight Configuration Maker here.  If you are on Windows, I have a setup for a friend that works amazingly well using Prismatik.  You can find a 50 LED Prismatik configuration as well as my 75 LED boblight configuration in the same GitLab repo as the Arduino sketch.

Now to the really fun part - the LED mount. Please observe my first and terrible attempt at a 75 LED mount:

Version 3.0.  I'm not happy with this at all.

Pointing the LEDs straight at the wall "worked" but it could be a lot better.  I wanted the LEDs pointing out at a 30° angle from the back of the display. After a lot of experimentation, I found that building such a setup was not obvious.  I had a miter saw but not much experience with it.  Then I found that a miter saw calculator existed!  If I cut the boards with a blade angle of 37.8° and a miter angle of 26.6°, I could make exactly what I wanted.  The depth side of the frame boards came together at a 90° angle while the width of the boards is angled out at a 30°.  It's hard to explain, but here are some photos.
Then I needed 2 boards to attach to those angled boards in order to attach it to the VESA mounts on the display. This required building a 60° jig.

 Here's how everything fits together.

Additional components needed:
  • A 4+ Amp power supply.  I like the ones from uxcell like this
  • A relay to turn the LEDs off when the TV is off. I plug it in to the USB port on the TV and the TV powers the port down when you turn it off. You can go the homemade route or buy one.  The uxcell power supply whines when the DC power is cut off so I'm going to switch the relay from breaking the DC circuit to the LEDs to breaking the circuit on the AC line. Be sure your relay can handle the load you will put to it!
  • Hot glue.  I really like the Gorilla Glue hot glue sticks. They are perfect for attaching the LEDs without damaging them so you can repurpose your LEDs later. You could also drill 2 small holes on each side of the LED and attach them with zip ties.
  • A way to mount the components to the frame.  I like Command Strips with velcro. 
  • 4x metric bolts for the VESA holes in the TV
The final setup looks like this.

Thanks for checking out my project!  Please post any questions and I'll do everything I can to help.


  1. How do the LEDS connect to the Arduino? I cant see super clearly from the pictures. Also if you remember, what type of LEDs did you use?

  2. Hi Mason! Thanks for checking out my project!

    I used these LEDs: But they are currently out of stock. Technically, I believe that the Arduino sketch is compatible with WS2801 (which is what I used), WS2811, and WS2812. You'll have to make some minor tweaks to the code, but FastLED can support pretty much anything.

    The important things to keep in mind when shopping for LEDs are the spacing between each element, the correct voltage requirements for your setup, a 12mm diffused module, and support via the FastLED library.

    I'll elaborate:
    The distance is important because you need to make sure that you have enough slack between elements so they can sit squarely; if you try to put 50 LEDs with 2" spacing around a 50" TV you're gonna have a bad time.
    The voltage is important so you can buy the right power supply and integrate the LEDs into the rest of the system. I choose 5v so I can power my relay, my Arduino, and the LEDs all from the same power supply.
    The 12mm diffused elements are perfect for this application. If you get the surface mount LEDs (like these: then you will limit yourself greatly in how you set them up. Alternatively, you absolutely could get the SMD diodes and build your mounting rig to incorporate that. When I built this version, I wasn't happy with the SMD diodes spacing and mounting options available. This is mostly a preference thing.
    FastLED supports pretty much any LED strip. I went with the older WS2801s because my first system was based off of a strip of 25 of them. By buying a 50 LED strip, I could effectively have 75 LEDs by just splicing some wires.

    Now to actually answer your question :)
    Each type of LED strip has a different communication protocol that are not compatible with each other. For my WS2801s I had hooked up the ground to the ground pin on the Arduino (everything needs a common ground), the "clock" wire to pin 13 (SPI Clock), and the "data" wire to pin 12 (SPI MOSI). I hope this is making sense.

    It may be worthwhile to point out that my setup is largely compatible with the Adalight by Adafruit. I built my initial design and published it several months before Phillip posted the Adafruit tutorial. He was able to do a LOT of things better than I had on my first version. If you get stuck, I'm happy to help you out further. And I highly recommend the Adalight tutorial as it is geared more toward newbies than mine is.