Pinterest Stumbleupon Whatsapp

Ambient lighting that reacts to the image on your TV is easier and cheaper than you think – and it makes for a great upgrade to your home cinema experience.

Originally developed for Philip’s TVs in 2002, the feature is still only available in a limited number of models – and as a result, a lot of people have tried to make their own Ambilight that didn’t involve buying a new TV. Until now, they’ve been relatively expensive or low resolution (just a few pixels on each edge) – I even made a single pixel version Build Your Own Dynamic Ambient Lighting For A Media Center Build Your Own Dynamic Ambient Lighting For A Media Center If you watch a lot of movies on your PC or media center, I'm sure you've faced the lighting dilemma; do you completely turn off all lights? Do you keep them on full blast? Or... Read More  a few years ago. Now a new generation of affordable, programmable LEDs has arrived – and you too can build a high resolution Ambilight clone for as little as $60. Interested?

Step 1: Demo

First, a demo of what we’re making. In case you’re curious, the video playing is Electric Sheep, a 3-hour long psy-trance trip – it’s a perfect match to demonstrate the Ambilight. Of course, not all video is going to produce the same pleasing results – many movies are just too murky, or are presented in cinema format resulting in black bars (and consequently, no colour data). I found the best results with the bright, vivid colours in most animations, as well as action movies with elaborate CG effects.

At the moment, it only works with some signal processing on the computer side – so it’s great for things like VLC, Popcorn Time, Kodi (formerly known as XBMC), or PC gaming. Unfortunately, processing generic HDMI input is more difficult – at the very least, we would need an HDMI splitter, and some kind of converter to a more readable analog format. I’ll leave that for a future project – for now, this only works with a computer.

Step 2: You Will Need

The parts list is short – no complex electronics here:

The main part of this ambilight clone is a string of individually addressable WS2812B LEDs. Each LED has it’s own chipset and single line is used for communication.  I bought mine from Aliexpress for $52 including shipping – that was for a 5-meter reel (150 LEDs), which is more than enough for the largest of TVs – and a lot cheaper per LED than the $50 string that Adafruit sells. A standalone 5V/10A power supply can be bought for around $10, but I used an old ATX power supply that I’d previously converted into a bench supply How to Make a Bench Power Supply From An Old ATX PSU How to Make a Bench Power Supply From An Old ATX PSU If you have an old computer ATX PSU lying around, you can give it new life as a bench power supply. Here's how. Read More . If you have a huge TV and are planning to join multiple strips because 5 meters isn’t enough, be sure to work out your exact power requirements at 60mA per LED.

Step 3: Wiring

Let’s test the lights first to ensure the power supply is sufficient and the basic communication is working. Connect pin 6 from the Arduino to the DIN on the LED strip – your strip should have a breakout lead on one end, so use a male-female jumper wire. Also connect the GND pin from the Arduino to GND on the strip. Do not attempt to provide power to the strip by the 5V pin on the Arduino. You will fry the Arduino, very quickly. Instead, use an external 5V power supply. A desktop PSU will happily power the full 5-meter strip for testing (assuming you’ve followed our bench supply conversion guide How to Make a Bench Power Supply From An Old ATX PSU How to Make a Bench Power Supply From An Old ATX PSU If you have an old computer ATX PSU lying around, you can give it new life as a bench power supply. Here's how. Read More ). Calculate at 60mA per LED; so in my case, 114 LEDs at 60mA is just under 7A. If you’re thinking, “7 amps sounds like an awful lot!”, it’s because this runs at 5 volts – 7 amps at 240 volts would be a lot more!

Note that these strips have a specific direction in which the signal must flow, indicated by arrows. If you’re connecting multiple strips, you may also need to re-inject the power midway to avoid voltage drop – I found this was unnecessary with just 5 meters though.

Step 4: Load the Arduino code and Test

There’s both an Arduino and Processing part to the project. First ensure you’ve added FastLED to your Arduino libraries directory, then download this code. Modify line 7 for the number of LEDs you have; and if you find the colour profile is broken, modify line 47. For the strip I purchased, it’s using chipset WS2812B and colour order of “GRB”. See the FastLED documentation on how to calibrate to your strip – but the default should be fine if you bought the same LEDs.

Lastly, you need the Processing components from the Adafruit project code. For testing, open up Colorswirl.pde. Again, modify the number of LEDs on line 29; and the serial device on line 44. If Arduino is the only COM device plugged in, Serial.list()[0] is fine. If not, try Serial.list()[1]. Run the app and with any luck, your strips will show a beautiful swirl of colours.

Note that you’re not limited to Processing – anything which is compatible with the Adalight (such as Prismatik) can also be configured to work with this – but we’ll only be covering the setup procedure for Adalight in this tutorial.

Step 5: Measure and Cut To Size

Pull your TV off the wall or turn it around, and measure up. I’m assuming you’ll be sticking the strips directly to the TV, but if that’s not the case you’ll need to build a frame. Try to ensure you get a pixel directly in each corner, but otherwise this step should be easy. Go ahead and cut the strip into shorter lengths – cut only between the copper pads where the dashed line indicates; and apply 3M double-sided sticky tape to each length. Don’t use cheap, generic tape like I did – it just won’t stick.

If you need to leave a gap at the bottom due to a TV stand, do so, but make sure your strip starts on either side of that and not in the corner – you can configure those missing pixels later in the software side of things.

Step 6: Trim the Plastic

If your strip is contained within an outer waterproof plastic case, trim this away.

Carefully apply a little solder to each copper pad before you affix this to the TV – it’ll make joining the pieces a lot easier later on.

Step 7: Attach to Your TV and Join

Go ahead and stick the strips to the back of your TV, remembering that each strip has a direction that the signal must follow. It doesn’t matter which corner or which side of the TV stand you start from.

To join the corners, simply connect each of the 3 pads to their counterpart in the next strip. Again, applying a little solder to the wires before you attempt to join it to the pads is a lot easier. Leave the final strip as is – don’t connect it back to the start!

Step 8: Test Again

Let’s make sure we didn’t mess up the soldering there – load up the color swirl app again and check. Once you’re happy, return your TV to the right position and tidy up the wires. Let’s move on to configuring the software.

Step 9: Configure Adalight

The is the most tedious part of the project – each individual LED must be defined in the software. Load up Adalight.pde in Processing and first change the variable that defines the number of pixels along the sides and top (ignore any missing ones for now) – this is on line 87. In my case, I used 35 pixels on the top and bottom, and 22 at the sides, so this was defined as {0,35,22}.

Just underneath this is where you’ll find the “per-LED information” – a long list that defines every single LED around the TV. Each LED is defined as a set of 3 numbers:

  • Monitor number (I assume 0, but yours might be otherwise)
  • X coordinate – 0 being the left (facing the TV screen)
  • Y coordinate – 0 being the top (facing the TV screen)

Thankfully, one of our incredible readers – James Rankin – has developed a useful online utility which does the hard work for you. Just enter the size of your matrix and the start position, then copy/paste the generated matrix definition into the Adalight Processing app. He’s also posted a quick fix for dealing with widescreen movies, where the Processing code would normally evaluate the black bars at the top and bottom of the screen to mean display no lighting effect. Thanks James!

If you get errors when compiling, it means you’ve missed a comma somewhere or have too many curly braces – double check your code.

Step 10 Sit Back, Watch a Movie!

Run the code and launch a movie with your favourite software – the debug console of Processing tells me my computer manages a good 15 frames per second (that’s the refresh rate of the LEDs, not the video playback) – any modern computer should be able to handle that. There’s a few more variables you can adjust such as minimum brightness and the fade delay between refreshes – as ever, you’re encouraged to read through the code, understand it, and modify.

Congratulations, you now have an awesome DIY Ambilight system for $60 (and some LEDs left over, probably). Questions or problems – get in touch in the comments and I’ll do my best to help. Also tell us – what would you like to make with the remaining LEDs?

Leave a Reply

Your email address will not be published. Required fields are marked *

  1. Suajie
    April 28, 2017 at 9:51 am

    Hello Sir..

    Thanks for this tutorial.. I found your way more simple than others..

    I am really noob here.. I still cant get clear crystal how did u setup this Ambilight..

    Can you show more details (pictures) or flowchart.. From PSU needed to connect LED or Arduino?..

    And how to connect LED to Arduino?..

    Sorry for noob english sir..

    Hope you will understand it..

  2. GenreDown
    April 11, 2017 at 9:47 am

    Thanks for this guide. I'm planning on doing this, i have ordered the LED STRIP and the Arduino. But I don't know wich power source to use, cause I have a pretty big TV (55 inch) and the strip I bought have 60 Leds per metter. I think I'll use aproximatively 4 metters, and about 230 LEDS. So, wich Power source will be appropriate ? (Sorry if my english is bad, I'm french)

    Thank you

    • James Bruce
      April 11, 2017 at 9:53 am

      At full white, that works out at about 14 amps, so either a 15 or 20A supply:

      However, you could also modify the maximum brightness, because it'll rather bright anyway with 60 leds per meter, but I'd do that anyway regardless of what PSU you get.

      • GenreDown
        April 11, 2017 at 10:50 am

        Thank you for your answer. I found a PSU that will do the job, but its 12V, I Saw that it is possible to power the arduino with 12 volt and it will convert it to 5 volt. Can i use this 12V PSU to power the arduino and the led strip ?

  3. Sammy
    December 7, 2016 at 4:27 pm

    Trying this again. I'm running this off a Windows 10 computer, using an Arduino Uno clone. I've got the LED's working (WS2811). I've run the Colorswirl processing sketch and all lights work fine. If I run the Adalight Processing sketch, the popup showing the screen colors are all correct, and change if I change what's on my screen. But the lights just flash random colors, rather than what's being shown in the popup window of the screen. I can include the code, but it has been copied and pasted from this tutorial, so I'm not sure if it's needed. Any help is welcome!! I'm new to this, so please be specific in your assistance.

    • James Bruce
      December 7, 2016 at 5:07 pm

      Sorry Sammy, not sure I can be of much more help here. If the colorswirl is running correctly, the hardware definitions must be correct. The code is basically all from Adafruit at that point, so I would try their help forums:

      One thing to check before that: find the line that defines the type of LEDs you have. Line 47, I think, where you changed the colors before from GRB to RGB, and check what else is written there. It needs to match your type of LEDs.

  4. Sammy
    December 6, 2016 at 7:09 am

    Hi James...thanks so much for the excellent tutorial! I tried so many different ones, and yours was the easiest one to follow, and the only one I had success with.
    I have one problem...I'm using a string of 25 LED's (WS 2811), and it seems to me that whenever they should be displaying yellow, they display green. I'm not sure if this is a problem with the naming of them (should be GRB rather than RGB?...and if so where in the code would I change that), or if it is a colour adjustment I have to make (again, if so, where?) or is it just the way it is?
    Thanks for any help you can send my way!!!

    • James Bruce
      December 6, 2016 at 8:52 am

      Line 47 of the code that runs on Arduino:

      That's where the color profile is set. I used GRB, but your's might be RGB. Try switching that around.

      • Sammy
        December 6, 2016 at 5:37 pm

        Hey James...thanks for the speedy reply. So I'm not sure what I've done...everything was working fine. But now I'm getting a Windows Explorer error message saying "USB device not recognized. The last USB device you connected to this computer malfunctioned, and Windows does not recognize it." It keeps popping up every second or so. Also, now I can't run the Processing program. I tried the Arduino strandtest and everything seems fine. I uploaded the Arduino part of the program, then try and play the Processing program, and no lights.
        Any ideas?

        • James Bruce
          December 6, 2016 at 5:43 pm

          You may have joggled some of the wires - or perhaps tried to power too many LEDs without using an external supply? Generally that error means there's a hardware problem, like trying to draw too much current from the USB port. Definitely check that you're providing power for the LEDs from an external source and not through the Arduino.

      • Sammy
        December 6, 2016 at 5:40 pm

        The other question I have, and it may be related, is that in the Arduino IDE program, I have the Arduino set for Port 3. But in the Processing program, it won't accept Port 3...I have to set it to Port 1. I don't understand this...any ideas on this one? Thanks for all of your help....this is my first Arduino project....came in knowing nothing. I appreciate your patience!!!

      • Sammy
        December 6, 2016 at 6:16 pm

        So I can run the strandtest from the Arduino IDE, and everything lights up as it should. I'm using the Arduino on Com 3. When I try to run the Processing programs, (adalight or colourswirl pde's) I get no lights. There is a readout from the bottom of my tv showing me my frame/sec and bytes/sec, but no lights.
        It was working earlier...I have no idea how to fix this now! I'm not even sure which port to use. It used to work on 1, but nothing now. When I try to put in Port 3 (if I'm doing it correctly and in the right place?) I get an error message.
        Like I said before, I'm brand new to this, and I'm sorry for all the's just frustrating when it stops working!! Thanks for your patience!!

      • Sammy
        December 6, 2016 at 8:03 pm

        Sorry for all the emails....just getting frustrated. I deleted and re-installed everything. Now I'm getting light through Processing program, but it continuously flickers...gonna have a seizure....again, sorry, but any ideas?

  5. Mickey Yang
    October 12, 2016 at 1:13 am

    James Rankin's online utility no longer works. :(

  6. Carl E.
    September 17, 2016 at 6:28 pm

    Thanks for your write up. Everything thing in my setup seems to be working, colorswirl etc. But when I went to input my LED array positions i realized a few things that were not originally apparent, which are causing me problems now. I set up the LEDs going clockwise...when my display was laying on the floor. With my TV back on the wall you could say I am "looking at the back of the LED strip"...they now are running counter-clockwise from the first LED. If I use James' utility to generate the array and copy and paste it the LEDs light up, albeit not correctly relative to their position around the monitor. I thought I would do it manually, so I made an excel spredsheet with the numbers distributed to match the way they are laid out and when I paste that into the processing sketch I get an error when I run. Around line 351 (+/-) where the code dealing with down sampling is located "c = pxls[offs[o]];" is highlighted and the error reads "ArrayIndexOutOfBoundsException: 2076551".

    After all that, I can't figure out how the change the code to get rid of the error. Should I just pull the strips down and rewire?

    • James Bruce
      September 20, 2016 at 12:14 pm

      Sorry for the late reply... Don't pull the strips off! The error is qutie simple – it just means you've got a number that's too high somewhere, or too many LEDs. Double check the number of LEDs you've defined, and the number you've put into the array. Also check that you're starting from zero - remember that arrays are zero indexed, so the first item is 0, the last is n-1.

  7. RB
    August 29, 2016 at 9:01 pm

    Hi, I connected everything together, two 17 led strips and two 41 led strips. I had to re-inject power midway like you said because I was getting flickering and dim leds but I find this weird since its way less than 5 meters. Anyway, now my problem is, when I set all the pixels to white, the first three sections are a very bright white while the last one is a yellowish white. Nothing too crazy but noticeable. What can be the reason?

    Thank you very much for this guide.

    • James Bruce
      August 30, 2016 at 10:45 am

      The yellowing is symptomatic of voltage being lower. Did you correctly splice in more power, by cutting the existing line?

      • RB
        August 31, 2016 at 2:12 pm

        I'm probably doing something wrong

        this is my first attempt. With this distribution the top and bottom rows were a bit yellow (not only the last one as I said before).

        With this one, the top and left strips were the ones yellowing. In short, the end strips are the ones yellowing.

        I should point out I'm using a 1m cable from the power supply to the leds. The cable is one of those red and black wires for speakers and such, so it's quite wide. As I understand it, the thinner the cable, the more resistance it provides.

      • RB
        August 31, 2016 at 2:25 pm

        But yeah, now that I can measure it, there seems to be 4.2v.

    • RB
      September 3, 2016 at 11:03 am

      Ok I just figured it out. The wires I used between strips were too thin. That's why the yellowing only happened in some of the strips. Now there's no need to re-inject power. Thank you and sorry for bothering you with this stupid mistake :)

  8. Anonymous
    August 19, 2016 at 3:55 am

    I couldn't help myself and I went ahead and tackled the project found here that let's me use my LEDs with any source I can connect to my receiver. It is awesome to have this thing working with my TV consoles and PC from one source.
    I thank James for this tutorial since after finishing it I had more confidence to take on something a little more ambitious.

    • Sammy
      December 7, 2016 at 5:07 pm seem to be quite knowledgable about all of these problems, and I'm hoping you may shed some light on mine. I'm running an Arduino Uno clone, a string of ws2811 leds, windows 10 and Processing 2.2.1. When I upload the sketches and run colorswirl.pde, everything works fine. When I run the Adalight Processing sketch, the popup window which shows what colors it's capturing, everything is good, but my lights just seem to turn on flashing random colors. Any suggestions?

      • On Poynt
        January 3, 2017 at 10:48 pm

        Hi, sorry for the late reply. I was traveling and have not been on here for a while. Did you get your Adalight working or is it still giving you fits?

  9. jawkuz
    August 3, 2016 at 3:07 am

    Would it be possible to use a molex from my 600Watt (uses ~420-450W at load) power supply that's already integrated into my computer to power this or is this too much power to draw on the 5 volt line, it can put out up to 20A max on that line. I'm having a hard time figuring out how many amps are being drawn on that line. I'm running an i5, r9 290, one Mx100 SSD, one WEDEX Blue 1TB HDD, couple of stick of DDR3 ram.

    Should I just be cautious and use an external PSU instead? I'd rather have it turn on with my computer then have another thing to power on when I want it to run.

    • James Bruce
      August 3, 2016 at 7:42 am

      In theory, you have enough total power available in your PC - BUT it may not all be available on the 5v line. For instance, I burnt through 2 power supplies when I tried to add a second r9-290 to my system, because the 12v lines weren't "bonded" together, even though in total they were each rated at 750-900w.

      Best to play it safe with a separate power supply. If you literally don't want to bother turning it on an off, use a high power relay to automatically switch off the live wire on the external supply.

  10. Manny
    August 2, 2016 at 3:02 am


    I have an Adafruit board. Can I use that for this project, or do I need an Arduino UNO?

    • James Bruce
      August 2, 2016 at 7:16 am

      That's a bit vague. What exactly is an Adafruit board? They sell many different boards.

  11. Twinstar
    July 18, 2016 at 1:28 am

    Hey i only get 5,7 fps =/ and i have no idea why =/

    • Anonymous
      July 25, 2016 at 8:57 pm

      What are you system specs?

    • Twinstar
      July 26, 2016 at 11:02 am

      AMD FX-8350,
      AMD RX480 8GB
      RAM 16GB 1866Mhz

      The System is at 10% load running this code.

      Maybe it's the 4K Display, but as i said, my System has most of it's resources left.

      • Anonymous
        July 30, 2016 at 3:25 am

        It could be the display, don't know the rhyme or reason why it performs the way it does on certain systems. When I was testing it on my laptop I was getting about 15fps and that was with a older laptop with a 520M nVidia Optimus, 8GB Ram and an i5 clocked at 2.4.
        I put it on my gaming machine which has very little running in the background and has a RX380X2, 16Gb RAM and an i5 6600k unlocked running at 3.6GHz, still only getting 15 to 20 fps. Haven't been able to find out what affects the framerates. There is someone further below getting about 50!

      • Anonymous
        July 30, 2016 at 3:48 am
  12. RB
    July 13, 2016 at 10:13 pm

    I bought this with my arduino to tinker with it before doing the real thing because they were cheap. Anything I should know about?

    • James Bruce
      August 3, 2016 at 7:39 am

      Those aren't Neopixel LEDs, they only do the same color; and they run off 12v, not 5v. Wrong LEDs.

  13. Arsenius
    July 10, 2016 at 1:49 pm

    I got the same ledstream as in the guide but when i put the #define NUM_LEDS line in de ambilight file to anything higher dan 20 and then run colorswirl with the same number of leds then it doesnt work anymore.
    I tried multiple strips of leds and i checked my adapter. any idea's what this could be?

    • Anonymous
      August 3, 2016 at 3:01 am

      Did you manager to get it worked out Arsenius?

  14. BAM
    July 8, 2016 at 1:55 pm

    I was trying to get this working with an Arduino Nano and initially everything would work perfectly, but within quick order the LEDs would start flickering - usually towards the ends of the led strips. After switching out multiple LEDs I thought might be bad, swapping power supplies, using different Nanos that I had laying around, and adding capacitors and resistors to the wiring,

    I began to think it was an issue with the data signal not being strong enough when powered off USB. If I ran a test with just the nano and no pc all the LEDs worked perfectly, but as soon as I involved the pc the LEDs would flicker at some point during their cycle. I tried running the Nano using my 5v line and the power from the USB disconnected, but without luck. Then I found this little snipped and it started to make sense: "The Arduino Nano can be powered via the Mini-B USB connection, 6-20V unregulated external power supply (pin 30), or 5V regulated external power supply (pin 27). The power source is automatically selected to the highest voltage source. The FTDI FT232RL chip on the Nano is only powered if the board is being powered over USB."

    In the end I used a Teensy LC. While the LC is a 3v board, with the trace between VIN and VUSB cut, PIN 17 has a the ability to output at VIN levels. So, using the 5v from the power supply to feed the Teensy LC all my lights work perfectly!

  15. florin
    June 30, 2016 at 7:58 am

    Works like a charm! TX. same problem with games.

    • Anonymous
      July 16, 2016 at 3:09 am

      I am still working on mine so I haven't used it with a game but one solution that I ran into was to turn on Aero in Windows and that seemed to solve the problem with games and other programs. If you have the option run it in full screen windowed mode rather than just full screen.

      • Anonymous
        July 16, 2016 at 3:09 am

        I meant turn Aero OFF

    • Anonymous
      July 25, 2016 at 9:48 pm

      Did a little more digging around and unfortunately the turning off Aero fix only works in Windows 7. After that it was a feature that was integrated into the desktop on 8, 8.1 and 10 and there is no way to turn it off AFAIK.
      For The Witcher the workaround I had was to disable fullscreen mode and hide the taskbar. Not the best solution since I can still see the edge of the top of the taskbar but my LEDs work properly now. I am looking at other solution as well.
      Since I have the Steam version it looks like the switch -window does not work as it does in the disc version. I am still looking into other solutions but for now it seems like users with anything other than Windows 7 will have to look into the possibility of the game supporting full screen windowed mode somehow.

      • Anonymous
        August 1, 2016 at 10:14 am

        It is also possible to control the LEDs during gaming with Ambibox and PlayClaw. This works very well.

        • Anonymous
          August 1, 2016 at 11:16 am

          But the solution with full screen windowed games works also very well. At Steam you need the start options "-windowed -noborder". I think it is better than the solution with Ambibox and PlayClaw because you do not need extra programms and PlayClaw isn't annoying you with popup messages :). So thank you very much ON Poynt.

        • Anonymous
          August 2, 2016 at 10:23 pm

          Thanks for the switch options for Steam Xx Yy. I'll try them out later.

        • Anonymous
          August 3, 2016 at 3:06 am

          In case you are interested I found a user of Prismatik software for LightPack modded the software to where it provides much better support for DX games. The developer of LightPack has been quite supportive so I will also give this a whirl. I am not broke but at $40 to $50 PlayClaw does not attract me as a solution, at least not right now. I will probably still check it out as an option.

          Here's the link if you're interested. I just want to see the performance differences since I know that the original Adalight screen capture is optimized.

        • Anonymous
          August 4, 2016 at 4:30 pm

          I haven't buy PlayClaw, but I think it is possible to use the programm in a restricted free version too.
          Thanks for the link it seems to be very interesting I think i will try it the next days.

  16. rebirth2k2
    June 19, 2016 at 7:59 pm

    Did someone know how to use the fix for the widescreen, the processing 2.2.1 work ok with adalight code but Prismatik 5.11 didn't run the led (i can't find the old ver to run with plugin).

    • Anonymous
      July 26, 2016 at 12:07 am

      I was able to get widescreen to work by using some code listed further down in the post by jrankin here . The author of the modded applet only changed the code to work with the default values and never provided the source code to make it work with other LED configurations.

    • Anonymous
      July 26, 2016 at 12:48 am

      I got it to work by using the code provided by jrankin in {url=]this post[\url]. Look for it further below. His code allows you to scale the Y coordinates to a certain degree. I found it more flexible that the solution from the original author because it seems he only provided a program that would work with the original Adalight and did not provide the source code to tweak it for other LED setups.
      If you find it confusing I am willing to provide a link to download it. The only slight downside is that his code has no keybindings so you can't switch between normal and widescreen like the original solution did.

  17. Nicolai
    June 11, 2016 at 5:10 pm

    only half of my LED's Are lighting up. the rest stays off when i fire up the Adalight processing sketch. but if i use the Colorswirl.pde and change line 29 to 80 pixels. they all work just fine. any suggestions. ?? been trying to fix this for 3 days now. it drives me crazy.

    • James Bruce
      June 12, 2016 at 7:06 am

      Possibly your screen size is set wrong? Sounds as though it's not wired wrong, but the screen analysis is just finding black pixels along two edges...

  18. Dom
    June 8, 2016 at 1:57 pm

    first of all thank you for this very nice guide. I build the ambilight system and it works normaly (Destop, VLC Player, ...) very well but if I open games (for Example with Steam) it is not working any more (the Leds colour is frozen or sometimes just black). Do anybody know how to fix this problem or do you have the same problem?

    • Anonymous
      July 26, 2016 at 12:28 am

      See my reply above. The short version is you can get Steam games to work in Windows 7 if you turn off Aero. Other versions of Windows after 7 have it built into the desktop and cannot be turned off. The only workarounds I have found so far is to play the game in a full screen borderless window. The way to turn this on varies from game to game, if at all supported. Some have it in the graphics options and some have it by adding command switches to the game exe or shortcut. Unfortunately these commands may not work in the Steam version of the game. Don't know why. You'll just have to do some digging to see what screen modes the game supports.

  19. john
    June 7, 2016 at 8:04 am


    Followed your directions and for most part works. Using WS2811 strips cut at 9 leds each. I am then connecting them with 3 pin solderless connectors. The first 9 leds in the series lights up fine, its the other nine in series is not lighting at all. If I disconnect the series of strips and connect each one individually, they light up without issue

    • James Bruce
      June 7, 2016 at 8:06 am

      Silly question, but are you sure your second strip is going in the right direction? There should be arrows on it, and the signal only goes one way. I've never used solderless connectors, but it's possible the connection is dodgy.

      • john
        June 7, 2016 at 8:08 am

        Yes, arrows are going in right direction. Just re-verified because I'd figured the question would come up.

        • James Bruce
          June 7, 2016 at 8:11 am

          Do you have a multimeter? Check the ground is continuous on the second strip, and the 5v is flowing, and you should have a jumpy 5v signal on the signal line.

        • john
          June 7, 2016 at 8:14 am

          Just an FYI, using 12v WS2811 and not 5v. As for multimeter, I will dig it out later.

        • John
          June 8, 2016 at 4:33 am

          Success, dusted the cobwebs of my multimeter found led strip connector bad. Just had some 12v ws2811 laying around and wanted to tinker with arduino. Thanks for pointing me in the direction.

          Basically wanted to mod my son's computer with leds. Powering from the computer's power supply to both the ardunio and leds doesn't seem complicated using a molex adapter.

  20. PL
    June 2, 2016 at 8:39 pm


    How would one go about to do this for a PC?

    I have been dreaming of doing a system like this for my computer and TV.

  21. Peter
    June 2, 2016 at 5:08 am

    In processing I'm getting "arrayindexoutofboundsexception: 4673283" on line 346. I'm extremely new to coding (this is my first project actually). Does anyone have any idea what this might be, or how to fix it?

    • James Bruce
      June 7, 2016 at 8:09 am

      In the Arduino debugger with test code, or in Processing? Find line 346, and post back here with what it says on that line. Array out of bounds means it's trying to read a value that doesn't exist, like trying to get the 11th value from a list of 10 items. Something is defined that's too small, or too big.

  22. Stefan
    May 21, 2016 at 6:42 pm

    Hi, can I use RGBW LED bulb? I have one with full colors. It use bluetooth as controll. Is there any way to make ambilight with that bulb? Thanks!

    • James Bruce
      May 23, 2016 at 2:49 pm

      Well, in theory, sure. But in practice, I don't think anyone's tried this. Bluetooth latency is bad, so your bulb will always be behind the on-screen action, and you'd need a Bluetooth adapter on your PC.

      • Stefan
        May 23, 2016 at 2:52 pm

        Ok, thank you for answer. I have BT adapter for PC. Also, I have RPi and Arduino (and Arduino advanced kit). Can I combine all that to make something close to ambilight? :) I don't care for latencay, .5-1 sec is fine, just to work :)

  23. Herman
    May 14, 2016 at 2:28 am

    Very nice project, I will build it, but there is something not clear to me. I understand the output part of this, but I don't see the input, where does the arduino get it's input. In other words how is the movie information connected to the Arduino?

    • James Bruce
      May 14, 2016 at 6:27 am

      The Processing app on your PC examines the screen and send the edge pixel data to the Arduino over USB.

      This doesn't work for generic HDMI input, as that would require a Raspberry Pi, video capture card, and HDMI splitter.

  24. Noah
    April 20, 2016 at 6:13 am

    Id prefer to buy the LEDs elsewhere so what should I search for specifically? Also which arduino uno should I get for this? If you could provide a link that would be great! Thanks!

    • James Bruce
      April 20, 2016 at 6:58 am

      "WS2812B" or "Neopixels"

      Any Arduino Uno, but dont waste money on an official. I would provide a link to AliExpress, where I buy everything, but since you don't like that site...

  25. Patrick
    April 15, 2016 at 5:31 pm


    Did you solder 2 wires on the Ground and +5?

    • James Bruce
      April 16, 2016 at 6:51 am

      No, mine came like it. One pair goes to a DC adapter. The rest go to a three-pin plug.

  26. Spencer Powell
    March 31, 2016 at 9:48 pm


    First of all, awesome tutorial! I'm working on this for a school project. I decided to make a scaled down version on my macbook pro laptop (12 columns and 8 rows).
    I've got everything soldered and the lights work when I'm using adalight's strand test.
    After uploading the Adalight sketch to the arduino, I run the Adalight in processing and I get this error:
    "The size of this sketch could not be determined from your code.
    Use only numbers (not variables) for the size() command.
    Read the size() reference for more details."

    Any ideas how to solve this issue?

    • James Bruce
      April 1, 2016 at 9:48 am

      I believe latest version of processing changed a lot, and make the code incompatible - try the older version, or look for updated code by Adafruit.

  27. Piers
    March 17, 2016 at 3:47 am

    Hello James,

    I've now built the system and it works very nicely, however, the frame rate is not ideal (15-19). Would changing to a Teensy make a difference, or possibly a more powerful Arduino board?



    • James Bruce
      March 17, 2016 at 7:34 am

      It's a software problem on PC side, rather than the hardware. Look into Ambibox perhaps, the Processing app runs as Java and captures the screen using a pretty inefficient method, possibly worse with the latest version of windows...

      • Piers
        April 6, 2016 at 5:03 am

        Hi James,

        That's the FPS using Ambibox, with processing it's showing as 40-50 FPS. I've also tried boblight and Prismatik. My only conclusion is that the hardware is the limitation.

        How many FPS do you manage to achieve, and what's the hardware of the PC you're running the kit on?



        • James Bruce
          April 6, 2016 at 7:08 am

          Since moving house I havent actually set it up again lately. At the time I was getting about 15 FPS I believe, that was on a low specced i3/ nvidia 8600GT. 50 FPS is rather good!

  28. olivier
    March 12, 2016 at 2:19 pm

    errror ( does not exist ) @


    • Booya
      July 12, 2016 at 1:41 pm

      I got the same error, anyone who has a fix for this? Thx for this tutorial James

  29. Utse
    March 8, 2016 at 1:47 pm

    Hi James,

    I have a question... If you're not using it on a TV, but on a regular laptop screen. While I'm playing a movie on lets say VLC, how does the arduino know what the screen is showing? And how do you have to connect te arduino to the pc to let him know which LEDs to power?

    Many thanks in advance!

    • James Bruce
      March 17, 2016 at 7:35 am

      It captures the screen and analyses it, hence why it doesn't work on a TV, but rather needs a mirrored screen output.

  30. Brandts
    March 7, 2016 at 11:21 am

    Great project! I am just wondering how the Arduino knows what image is on the TV? I have a Raspberry Pi with OpenElec connected to my TV as mediacenter. How can the Raspberry Pi communicate with the Arduino?


    • James Bruce
      March 7, 2016 at 5:40 pm

      Hi Brandts. For this project, you need additional software running on the PC side. There is a way to make this work on RPi, at least using XBMC and something called Boblight, but I'm not sure if the same plugin is available for OpenElec, and it's not something I've tried myself.

  31. Nicolas
    March 5, 2016 at 6:06 am

    Can I use the WS2811 which the leds are adressable from 3 to 3 leds or just the stripe with the 1 to 1 adressable?

  32. ReNo167
    March 4, 2016 at 11:34 am

    Hi James, thanks for the tutorial, I've done it but there was a problem when I used it with ambibox. Can u pls help me fix it? I was filming this error
    I use it in few minutes and it appear
    I use arduino mega2560 and windows 8.1

    • Quân B?u
      March 8, 2016 at 5:08 am

      Pls help us, i have same problem: led twinkling when i used it in a short time

    • James Bruce
      March 8, 2016 at 7:20 am

      Looks like a software problem rather than hardware - perhaps a refresh rate thing? Probably best asking in an Ambibox specific forum as I'm afraid I can't be of much help.

      • Quân B?u
        March 10, 2016 at 5:52 pm

        after manydays i searching for this problem and found last call to; in your sketch) change the lines:;
        } // end switch
        } // end for(;;)

        // flush the serial buffer
        while(Serial.available()) {; }
        } // end switch
        } // end for(;;)
        it working with ambibox better and problem not back. I think somebody had same problem and comeback here for share. Thanks James again :)

        • James Bruce
          March 11, 2016 at 8:07 am

          Thanks for posting your solution, Quan!

  33. John
    February 28, 2016 at 10:29 pm

    Hi I keep getting undelcared erros in colorswirl. my lights are working fine using the fastLED examples

    Colorswirl.pde:27:1: error: ‘import’ does not name a type
    Colorswirl.pde: In function ‘void setup()’:
    Colorswirl.pde:33:7: error: expected unqualified-id before ‘[’ token
    Colorswirl.pde:34:10: error: expected ‘;’ before ‘myPort’
    Colorswirl.pde:39:10: error: ‘noLoop’ was not declared in this scope
    Colorswirl.pde:44:3: error: ‘myPort’ was not declared in this scope
    Colorswirl.pde:44:16: error: expected type-specifier before ‘Serial’
    Colorswirl.pde:44:16: error: expected ‘;’ before ‘Serial’
    Colorswirl.pde:49:3: error: ‘buffer’ was not declared in this scope
    Colorswirl.pde:58:18: error: ‘second’ was not declared in this scope
    Colorswirl.pde:129:35: error: ‘print’ was not declared in this scope
    Colorswirl.pde:132:68: error: ‘println’ was not declared in this scope

    • James Bruce
      February 29, 2016 at 10:29 am

      Hi John - that code is for Processing, not the Arduino IDE. It sounds like you might be trying to run it in the Arduino IDE instead. Download Processing from here:

  34. David
    February 26, 2016 at 7:54 pm

    Has anyone gotten the black bar correction to work? Is the .jar file in the Adalight-letterboxV1.0 directory (after the 'installation' file has been moved) meant to replace the original adalight.pde file?

    • David
      February 29, 2016 at 8:57 pm

      Got it to work. Now I can't figure out how to change the number of LEDs to fit my setup. I may not be able to without access to the source code.

  35. Andreas Lindberg
    February 26, 2016 at 6:44 am

    The LED strip you link to has rather expensive shipping (to Sweden). Is there one on that would work?

    If not, what should I look for in the name/product description to make sure it's one that can control the lights individually and not a "dumb" LED strip?



    • Jan Fredrik
      July 7, 2016 at 10:37 am

      Hi, did you find another from EU DX?

  36. Piers
    February 10, 2016 at 5:31 pm

    Would it be possible to provide a more detailed guide, or more pictures?

    • James Bruce
      February 10, 2016 at 5:40 pm

      I'm not sure how much more detailed I could get to be honest - this isn't designed for a complete beginner. Which bit in particular do you find unclear - maybe I can clarify it here?

      • Piers
        February 11, 2016 at 4:02 am

        Thank you for the reply, James. I am a beginner at some parts and not at others, the part I'm very curious about is power. Seeing a photograph of the far end of the LED strip would be helpful (even though you use a custom bench supply).

        I'm also curious about the amperes required, 7 A does seem like quite a lot (but the maths is correct), so I'm considering different LEDs. At the moment I have a ready-made kit (both a Lightpack and Ligthpack clone). Both using 12 V/1.5 A to power 30/90 (clone) LEDs (from the same 'family' as these ones, but not individually capable).

        You may not be able to help to with the above, but pointing in the correct direction would be immensely helpful

        • James Bruce
          February 11, 2016 at 8:24 am

          It's only seems like a lot because it's at 5V. If we were running the LEDs at 1v, you'd need 35A instead. There aren't any different LEDs you can use with this project - the 12v strips would require a separate driver circuit, similar to what I did here: (make sure you get logic level MOSFETs)

          I dont have a picture on hand, but if the Arduino is plugged into USB, the power supply should be connected to the + and GND of the strip, and only the GND of Arduino. The Arduino connects to the signal line of the strip (and indirectly through the GND of the power supply).

          If you unplug the USB cable, go ahead and power the Arduno by plugging the +ve from the supply directly to the 5V pin on the Arduino.

        • Piers
          February 11, 2016 at 12:49 pm

          The previous guide is more-or-less what I have now - strips of lights rather than individual control over each LED. It appears the only way forward is to use your solution above. Thank you, James, for the replies, I very much appreciate your help.

  37. Didier Bouchard
    January 30, 2016 at 6:18 am

    interesting tutorial. I will try that recipe!

  38. Andrew
    January 29, 2016 at 8:38 pm

    Hi James,

    I have another question. I calculated my LED strip to have 124 lights at about 7.5 amps. So if I buy a 5V 8A power supply would that work?

    Thank you,

  39. Steven Marks
    January 25, 2016 at 12:49 pm

    I have one question, i keep seeing tutorials that use resistors and transistors on whilst achieving a similar design, what is the reason for this and how come this one does not require that?

  40. Andrew
    January 25, 2016 at 9:19 am

    Quick question. So I follow all the steps in the tutorial except for one. In Step 2, it says to "provide power through the strip by using an external 5V power supply". How would I go about doing this? Sorry for being such a novice, and thanks for the help haha.

    • James Bruce
      January 25, 2016 at 9:39 am

      Hi Andrew. Your strip should have two sets of leads coming out of the end - one is 3 cables, red (power), blue/black (ground), and green (signal); plus a DC power input jack. If you buy an external power supply that offers a DC output, just plug it straight in there, then only connect the other blue/black and green pins to the Arduino while you've got USB plugged in (as the USB will power the Arduino itself).

      If your strip only has the three coloured cables, the external power supply should go directly to the red and blue/black; and the arduino should go to the blue/black and green. Basically you want to make sure that the Arduino is only powered over USB, and the strip is only powered from the external supply.

      I'm not sure how else to put this I'm afraid, if it's not clear please don't attempt the project as you may burn out the Arduino.

      • Andrew
        January 25, 2016 at 10:17 am

        Okay, awesome. That was actually very helpful. Thank you!

  41. Anonymous
    January 13, 2016 at 6:03 pm

    Does this work if you don't use a strip on the bottom edge?

    • James Bruce
      January 25, 2016 at 9:40 am

      In theory it should, you'd just not write out the co-ordinates for the bottom row. You'll need to do those by hand though, I don't think the automatic tool allows for that.

  42. Leo
    December 24, 2015 at 8:00 am

    If i have Arduino Mega instead of Uno the code should work? I did a strandtest and its work perfectly but when i try the code provided here and run color swirl on processing nothing happen.

    • James Bruce
      January 25, 2016 at 9:41 am

      It should, yes. It sounds like you have a problem with the Processing -> Arduino communication rather than a hardware problem though. Check the ports are correct.

  43. Noah
    December 15, 2015 at 5:19 am

    How would you configure it to use multiple monitors? Would you just make a configuration for each monitor and paste them both in or do you need to do more? Help is appreciated.

    Note I do not have the parts bought or assembled i just want to know how to set it up with multiple monitors before i buy everything.

    • James Bruce
      December 15, 2015 at 8:42 am

      Hi Noah. I can't confirm it works with multiple monitors I'm afraid. If you use the utility above, it allows you to specific which screen, but I can't test it.

    • Alex
      January 10, 2016 at 6:01 pm

      If you have monitors setup with nvidia surround or amd eyefinity, the three screens are actually treated as one large screen, that might be somewhere to start.

      • Noah
        January 10, 2016 at 10:31 pm

        That would work if they were both the same size monitor but i have one 25 in 2560 x 1440 and the other is a 55in 1080p tv so it would not work as a nvidia surround or amd eyefinity.

  44. CreationP
    December 10, 2015 at 6:24 pm

    Hello. The project is awesome but I have stumbled into a problem. I have 2 monitors with different resolutions. My main is 1920x1080. The secondary is an old one with a res of 1024x768.

    I am trying to calibrate the code to take input from my main screen but I get an "ArrayOutOfBoundsException: 1" to "range = (float)dispBounds[d].width / (float)displays[d][1];".

    I'm at a loss on how to change the code into taking input from the main screen. It always switches to my secondary. If I remove the secondary old monitor the led strip works as intended.

    This is my led array:

    static final int leds[][] = new int[][] {
    {1,5,5}, {1,6,5}, {1,7,5}, {1,8,5}, // Bottom edge, right half
    {1,8,4}, {1,8,3}, {1,8,2}, {1,8,1}, // right edge
    {1,8,0}, {1,7,0}, {1,6,0}, {1,5,0}, {1,4,0}, // Top edge
    {1,3,0}, {1,2,0}, {1,1,0}, {1,0,0}, // More top edge
    {1,0,1}, {1,0,2}, {1,0,3}, {1,0,4}, // left edge
    {1,0,5}, {1,1,5}, {1,2,5}, {1,3,5} // Bottom edge, left half

    Please help! :(

    • James Bruce
      December 15, 2015 at 8:44 am

      Sorry CreationP, I don't have a multimonitor setup to test this with. Check out the Adafruit forums for similar problems and solutions.

    • James Rankin
      December 18, 2015 at 12:30 pm

      Have you tried it using screen "0", That is a 0 as the first digit in your array above?

  45. Yuval
    December 9, 2015 at 2:11 pm

    Did anyone understand how to use to code for the black bar detection?
    I can get it to open to software but i cant find where to change the code to put my strips info in there, it seems to me I cant change it. Thank you.

  46. Leo
    November 27, 2015 at 12:36 am

    Hi, i want to make this project. Its fine to power the strip from my PC PSU? I have a brand 700w PSU that have 40A on 5v rail.

    • James Bruce
      November 30, 2015 at 8:48 am

      That should certainly work fine, but still be sure to not power the Arduino from both USB AND the 5v in, only one or the other at any time; and don't pull the power for the LED strip from the Arduino, only straight from the 5v rail. GNDs should all be connected together.

  47. Hugo
    November 24, 2015 at 2:38 am

    Hi, thanks for the tutorial, I was wondering, what's the normal fps count from processing?, cuz whith my laptop I get only 15 fps.

    • Anonymous
      November 24, 2015 at 10:34 pm

      Processing works on jvm (Java Virtual Machine)... that makes it slower than a native app, but it makes it compatible between different OS.
      One solution would be to write your own app on C or C++ compile it and enjoy with faster fps depending on the screen resolution).
      I'm working on my own solution and I hope to share the source soon, since I'm already working on it make it run for windows using .NET and/or C++ (yep, working on both) It's just that with the short time I have to work on it I have no idea when will it be ready.

      I'll share once it's done.

  48. Mehdi Tlili
    November 6, 2015 at 4:21 pm

    There is some important part of this project that nobody seems to mention.
    Where does the color information come from???
    Do I have to have a pc plugged to the tv each time I want to use this? If so it highly reduces the usability such a project...

    • Anonymous
      November 7, 2015 at 1:29 am

      Yes, it depends on a pc, but if you have a capture card, you could use on a regular tv, or if you have a smart tv with a proper SDK like android tv, it could work by writing your own app.

  49. Anonymous
    November 5, 2015 at 2:59 am

    Eureka!. thanks to all supporters.

  50. Anonymous
    November 1, 2015 at 12:08 am

    Hi guys. I've just spent the entire afternoon working this this. I must admit the soldering was the worst part. I need some help, my setup worked for a few seconds with the colorswirl, but, after that it failed. I have only 1 led working and the rest does not work, but when I plug and unplug the power suply they all blink at once.
    what is happening here, do I need a resistor on pin 6?, my power supply should be able to power them all. I'm using an ATX with the IDE connector for the 5 volts (red one) and ground (black one) it's properly bridged. what is going on?

    • Anonymous
      November 1, 2015 at 3:09 am

      I'll try to ground to both, the arduino and data... also will add a resistor to data pin... let's hope that's it.

    • James Bruce
      November 1, 2015 at 9:24 am

      When you say "properly bridged", do you mean when you have the Arduino plugged into USB? The power should not be bridged when also plugged into USB - only when USB is unplugged. It's possible you've fried your power regulator on the Arduino.

      But yes, always bridge grounds.

      • Anonymous
        November 1, 2015 at 1:57 pm

        I meant the ATX power suply. Afortunately the side strips are ok and only the top and bottom are malfunctioning. I'm checking the entire soldering and I'm gonna do a straight test with the 2 mts left of strip, if it works it must be the soldering. other wise is the strip. Luckily I have enough to replace the top and bottom, if not, then I must get another strip. The arduino seems fine. but I'm gonna test the power regulator anyway

        • Anonymous
          November 2, 2015 at 1:35 am

          could someone test the colorswirl or adalight on pin 13? is the led blinking full bright? or barely visible? Please post me your test (it doesn't need to be connected to the strip. If it's the strip I'm gonna be stuck at this for a long time, it took 2 months to arrive.

        • Anonymous
          November 3, 2015 at 3:06 pm

          well, I could save the strip replacing the first 9 leds, and discovered that somehow the data I was sending was overloading the strip with bytes, so I set a delay after every write command to 9 ms and the colorswirl works flawlessly (wiith lower fps but still acceptable on 49). It's not the first time it happens, but I'm still happy with the results, sorry for all the trouble before. I'll try to find the way to fix this issue and get full 60 fps as it shows for the first seconds.

  51. Adam Andrew
    August 18, 2015 at 1:47 am

    I am stuck getting ambilight configured.Error: "The size of the sketch could not be determined from your code. The url below is a link to screen shot of the code and the error:

    Thanks for any help, all tests were fine up until this point.

    • Adam Andrew
      August 19, 2015 at 1:32 pm

      Update: well I was able to figure it out on my own. The issue I was having regarding my above message was I was using version 3.0 of the processing application. I had to get an older version (version 2.2) in order to properly compile and upload the code. Once the code was uploaded I was able to complete this tutorial 100%. However:
      On a side note I was rather dissatisfied with the end result. The LEDs would only illuminate with VLC in full-screen mode. The outcome of this tutorial is not compatible with XBMC (KODI) in full-screen mode (although it didn’t work in windowed mode which is pretty much useless).
      I wound up starting from scratch using Bob Light to accomplish my goals. The outcome is pretty much perfect at this point, lighting is much more configurable in the Bob light config file in the wholesaler works perfectly.
      some side notes that will hopefully help some people get through this a few hours faster than I did:
      1. make sure the data transmission rate is set to be identical in the USB port, the sketch upload, and the configuration file. They must all match in order for this to work.
      2. Make sure your com port is set in the sketch in the configuration file and in the batch file to start the boblightD
      3. Double and triple check every setting in your configuration file builder.

      • Joan Ramon Vilaplana
        August 31, 2015 at 7:43 am

        I had the same problems, I am now using ambibox that much easier to set up, my goal was being able to also use for games, unfortunately I had problems with PlayClaw but it works perfectly in windowed mode without borders
        The program just take full screens so all borders effect to the lights, this is the only problem i saw,if someone has a better solution can also be used to play let me know
        Sorry for the google english :D

  52. Anonymous
    August 5, 2015 at 2:19 am

    Has anyone tried FastLed version 3 yet?

  53. Anonymous
    August 4, 2015 at 4:16 pm

    I really liked your project !!!

    Is possible to make a ambilight equal to the Afterglow of philips ? As in this video

    Even the text is projected on the wall (see in the minute 0:56)

  54. Niels
    May 14, 2015 at 7:16 am

    Ok I'll try that. Im using a ws2812b strip. I have connected the red and blue to a power source (5v 10A) and the blue to the ground of the arduino and the data to pin 2 on the arduino. Is this correct? Also how are you powering your arduino? Only by USB? Or with a extra adapter?

    • James Bruce
      May 14, 2015 at 7:28 am

      Yeh, that all sounds correct, though I think I used pin 6. Since it needs to be plugged into USB anything, just using that for power. All the grounds should be connected though, so that's correct too. Hmm. Do you get that issue with the test patterns too, or just ambilight stuff?

    • Gareth Jackson
      May 15, 2015 at 11:53 pm

      Niels did you try this fix from above? Worked for me and a few others. I tried a 330ohm resistor and capicator but didn't fix the flickering problem:

      Focalintent. (FastLED Contributor) :

      Immediately after line 157 (the last call to; in your sketch) change the lines:;
      } // end switch
      } // end for(;;)
      // flush the serial buffer
      while(Serial.available()) {; }
      } // end switch
      } // end for(;;)

      • peter
        January 3, 2016 at 1:16 pm

        thank you, that solved the problem for me!

  55. Niels
    May 14, 2015 at 6:40 am

    Ok cool thanks! I now have a new problem after about 5 minutes of good working they all begin to blink randomly not responding to input anymore.

    • James Bruce
      May 14, 2015 at 7:09 am

      Not something I've experienced - are you using the exact same strip as me, or different chipset? Some people recommend placing a resistor on the signal input to the strip, maybe try that: 270-420 Ohm should do it.

  56. Niels
    May 11, 2015 at 7:44 am


    First of all great tutorial!

    But i have a litte problem. When the screen is al white the light strip at the begining is white but at the end of the strain its pinkish. I have 200leds with a 10a powersupply.

    What am i doing wrong?

    • James Bruce
      May 11, 2015 at 7:48 am

      Voltage drop can be an issue sometimes. In one of the corner before the problem starts, try disconnecting the power from the chain before it, and instead connecting another line straight to the power supply - essentially "re-injecting" the full power. I wasn't aware this was a problem with Neopixels though, I thought it was only with single color RGB strips, but maybe.

  57. Kierewiet
    April 28, 2015 at 6:55 am

    Nice tutorial. Maybe I would like to try it myself but I'm not familiar with Arduino devices (and programming them).

    At the moment I'm using a Raspberry Pi 2B with Openelec as mediacenter. How should the Arduino be connected to the Raspberry and how should the Raspberry be programmed to work properly?

  58. Jesus
    April 15, 2015 at 11:57 pm

    Hello James, i'm trying to make this project for myself but i'm having problems. My leds do whatever they want , every led blinks in different colours but with no sequence just for a few seconds and then it stops but processing keeps workig. Also the first led is always on as soon as i run processing, once i run processing once it never turns off. What do you suggest? Do you know if that behavior is caused by a defective led strip?

    • Anonymous
      August 5, 2015 at 2:17 am

      Jesus, I had the same problem with a strip I ordered from AliExpress. I got a new one and it worked great.

      • Anonymous
        November 3, 2015 at 2:42 pm

        Jesus, I discovered something interesting, I worked with serial ports before, and the color swirl I tested was giving me the same issue. one fix I had was to set a delay after every write command in processing ide, when writing at high baud rate the serial sometimes overloads, so you give it a time to process. my sweet spot was 9ms or 10 ms of delay after every write. I don't like it, because it drops my fps from 60 to 49 but it's acceptable. Hope it works. I'll try other baud rates later.

  59. prime
    April 15, 2015 at 6:59 am

    Run the code and launch a movie with your favourite software – the debug console of Processing tells me my computer manages a good 15 frames per second

  60. Ayona Lee
    April 12, 2015 at 10:49 pm

    Hi James,

    What do you mean by the special Flora app? Choosing the adafruit flora board in the Arduino IDE? Or download an app?Thank you so much for you speedy reply, I appreciate it :)

    • James Bruce
      April 13, 2015 at 6:51 am

      Just read from Adafruit: "We have a modified version of the Arduino IDE so Mac & Windows users can get started fast - or for power-users we have instructions on how to modify an existing Arduino IDE install". If the option is in your menu, you must have the right version already.

  61. Ayona Lee
    April 12, 2015 at 2:47 am

    Hi I'm really new at this but do you know how I can make this using the Adafruit Flora board?

    • James Bruce
      April 12, 2015 at 7:28 am

      Hi Ayona, and welcome. Flora is Arduino compatible - everything should work as is. Just use the special Flora app provided by Adafruit (a modified version of the Arduino coding app), then go ahead with the sample codes in the this guide. You'll still need an external power supply for the neopixels, but everything is basically the same.

  62. Luis Genaro Arteaga
    April 2, 2015 at 8:22 pm

    Is it required any power source for the arduino? or does it work fine with USB only? I see on your pictures that not only pin 6 is connected, but it seems that another wires are done to the arduino, if so, could you post a diagram for it?
    Do the libraries need a specific version or the latest ones should work as well?

    Great job
    in the next weeks I will do one and I will let you know.

    • James Bruce
      April 3, 2015 at 3:49 pm

      The Arduino can be powered over USB, and latest libraries should work. Pin 6 is the only signal pin required - but I've also connected the GROUND pin to the external PSU. If you dont have a USB connection (during the testing stage for instance, with the colour swirl code loaded) - you can connect the 5V from the external PSU directly to the VIN pin on the Arduino to power it, which is what you see in first picture.

      Just don't remove the external power supply, and attempt to power the long strip of LEDs from your Arduino - the Arduino will be fried. If the USB is connected, don't connect the external power +ve to the Arduino: use one or the other for power, not both. The grounds however shoudl always be connected to everything.

      Does that make it any clearer?

    • Luis Genaro Arteaga
      April 6, 2015 at 12:55 pm

      I got the first part right, but the second... as far as I read what I understand about not powering the strip from the board but from the external supply, second: I can ground the arduino board and the strip with the external suply's ground. Third: I should not try give more amps to othe arduino using the external suply.

      I think I got it. thanks.

  63. David Counter
    March 27, 2015 at 2:51 pm

    I'd read that some software requires that an led be in each corner, or calculates the luminosity of each pixel on this assumption, or something along those lines, which kinda causes problems with the solderless link that I was intending to use for each strip of lights - do you know anything about this? (I hope I've explained it OK!)

    • James Bruce
      March 29, 2015 at 8:07 am

      Hmm, I haven't heard of that issue, but I don't think it would break the lighting effect if you just pretended there was one in the corner - ie, still have the same number of x and y LEDs.

  64. Gabriel
    March 25, 2015 at 3:29 pm

    Hi, what a great project, i used to have a real ambiligth 2 channel tv in my living room and the immersion sensation was great, i just ordered the parts to make one for my computer and another for the Living room tv.

    Can the same be done using a smaller arduino, like the nano, or a leonardo Atmega 32u4? just to make a small box to control the system.

    Can 42 leds be powered directly from the arduino? so you dont need another external psu.
    So i can just use a USB with 1,5 2 amp?

    • James Bruce
      March 26, 2015 at 8:52 am

      I'm not sure about a Nano, but they're cheap enough to give it and go and not lose much if it doesn't work; but I'd steer of the Leonardo for anything - it's got lots of incompatibilities and quirks, and is more expensive anyway. You could always make your own Arduino Uno clone to strip out the unneeded components / pins to save on space.

      Absolutely do not try to power more than 2 or 3 RGB LEDs directly from the Arduino, you will burn it out. You do need an external PSU for those.

      • Michel Merx
        March 17, 2016 at 12:17 pm

        James; thank you so much for this simplified tutorial! :D

        On the subject of nano; how much would the process be?
        Aren't the chips basically the same?

        Thanks in advance!

    • Michel Merx
      March 17, 2016 at 12:15 pm

      Did you try this Gabriel?

  65. Shinobi
    March 22, 2015 at 1:40 pm

    1st Thanks for the easy to follow guide. I managed to do the make ambilight working with accurate colors or close. only one problem is my last 3 LED lights don't work. I checked few times with colourswirl and the LEDs light up.
    my set up 33 across and 19down on right edge the last 3 don't work and can find out how to fix it
    {0,32,18}, {0,31,18}, {0,30,18}, {0,29,18}, {0,28,18}, {0,27,18}, {0,26,18}, {0,25,18}, {0,24,18}, {0,23,18}, {0,22,18}, {0,21,18}, {0,20,18}, {0,19,18}, {0,18,18}, {0,17,18}, {0,16,18}, {0,15,18}, {0,14,18}, {0,13,18}, {0,12,18}, {0,11,18}, {0,10,18}, {0,9,18}, {0,8,18}, {0,7,18}, {0,6,18}, {0,5,18}, {0,4,18}, {0,3,18}, {0,2,18},{0,1,18}, // Bottom edge,
    {0,0,18}, {0,0,17}, {0,0,16}, {0,0,15}, {0,0,14}, {0,0,13}, {0,0,12}, {0,0,11}, {0,0,10}, {0,0,9}, {0,0,8}, {0,0,7}, {0,0,6}, {0,0,5}, {0,0,4}, {0,0,3}, {0,0,2}, {0,0,1}, // Left edge
    {0,0,0}, {0,1,0}, {0,2,0}, {0,3,0}, {0,4,0}, {0,5,0}, {0,6,0}, {0,7,0}, {0,8,0}, {0,9,0}, {0,10,0}, {0,11,0}, {0,12,0}, {0,13,0}, {0,14,0}, {0,15,0}, {0,16,0}, {0,17,0}, {0,18,0}, {0,19,0}, {0,20,0}, {0,21,0}, {0,22,0}, {0,23,0}, {0,24,0}, {0,25,0}, {0,26,0}, {0,27,0}, {0,28,0}, {0,29,0}, {0,30,0}, {0,31,0}, {0,32,0}, // Top edge
    {0,32,1}, {0,32,2}, {0,32,3}, {0,32,4}, {0,32,5}, {0,32,6}, {0,32,7}, {0,32,8}, {0,32,9}, {0,32,10}, {0,32,11}, {0,32,12}, {0,32,13}, {0,32,14}, {0,32,15}, {0,32,16}, {0,32,17}, {0,32,18}, // Right edge

    any help will be great

    • wacko911
      April 5, 2015 at 10:39 pm

      Your start and end are the same. Drop your last 0,32,18 maybe?

      Havent built this yet, just guessing.

  66. Daniele
    March 21, 2015 at 2:01 pm

    Sorry for my bad English.
    I want to make your project.
    My questions is :
    -Can I use this for the project?
    - how long the led for a monitor 24''?
    - software work with videogames, movies and others picture on the pc?
    Is the same of ambiled HD?
    Thank you so much.

  67. Danny
    March 13, 2015 at 5:57 am

    Any chance of it to work on a raspberry Pi 2, with or without the Arduino Uno?

    • James Bruce
      March 13, 2015 at 11:10 am

      From my research, I found the RPi had trouble keeping up with the precise timings needed to drive the LEDs - the Arduino is better at keeping a fixed clock pace. You could in theory use the RPi to process the image, then send the updates out to an Arduino which would just drive the LEDs (and remove the reuqirement for a computer), but I'm afraid I haven't got that far yet)

  68. Michael
    March 8, 2015 at 1:53 am

    could this be done with 3x24inch 1080p monitors?

    • James Bruce
      March 9, 2015 at 6:33 pm

      Should work: the code allows you to define monitor number when specifying each pixel, but I havent got a similar setup to test. Have a go and let us know how it goes!

  69. Tobi
    March 3, 2015 at 1:12 pm

    Do i have to use WS2812B or WS2811? Is there a list of compatible LED strips?

    • James Bruce
      March 5, 2015 at 6:39 pm

      You do need to use Neopixel or WS2812 series LEDs. WS2811 are electrically identical, just a slightly different design; Neopixel is just a brand name from Adafruit for these LEDs. Other LED strips are not compatible as they can't be individually controlled.

  70. Sav
    February 26, 2015 at 2:40 pm

    Thanks Anonymous, I had the flashing/stuttering light problem after the 10th LED but applying your advice to the code has cured it, thank you :-)

  71. Mike
    January 11, 2015 at 9:28 pm

    Thanks, Anonymous! I havea string of WS2811 that had the last 10 flickering after having Colorswirl up for ~15 seconds. This fixed it!

  72. Anonymous
    December 22, 2014 at 1:58 am

    Hey James, I haven't had any stuck flickering pixels since doing the edit below. I wanted to let you know I am using the latest FastLED distribution and other might run into this as well.

    Focalintent. (FastLED Contributor) :

    Immediately after line 157 (the last call to; in your sketch) change the lines:;
    } // end switch
    } // end for(;;)
    // flush the serial buffer
    while(Serial.available()) {; }
    } // end switch
    } // end for(;;)
    Because disables interrupts while writing out WS2812B data (and there's nothing that can be done about that on the arduino/avr) it is possible for bytes of frame data to be missed which can still result in you getting corrupted frames. The change I made above forcibly flushes the serial buffer after every time led data is written out, which should reduce the chance of getting a corrupted frame.

  73. Anonymous
    December 22, 2014 at 12:50 am

    Did my last comment not go through ?

  74. Anonymous
    December 21, 2014 at 11:20 pm

    Thank you, that's odd I put my name in.

    I took this photo before putting the TV back on the wall.

    The start of the LED spool has the spliced connector on it, so I cut it off and ran one black to - on power supply and other black in on GND next to Pin 13 that is my data. Also because these issues and hadn't heard back from you yet I ran another black wire from true ground side on PSU to one of the other GND terminals on Arduino. Lastly I ran the red lead from strip to + on PSU and just taped off the other lead.

    Any suggestions ?

    You still using the sketch you linked to ?

    Thank you !

    256 WS2812B with 5V / 20a power supply

    • James Bruce
      December 22, 2014 at 8:04 am

      Hmm, I would put the GND to the PSU minus, but other than that it looks fine. Yep, still using that sketch.

  75. Anonymous
    December 20, 2014 at 10:30 pm

    Hello Bruce, Ty for your guide.

    I bought the 60led/m WS8212B and using the Arduino sketch that you linked to on GitHub. I am trying to use Ambibox as I want to use it for gaming. Prismatik was very resouce heavy and laggu even on my desktop beast. boblight is nice for just XBMC but I want to use for everything.

    My issue is I'm testing my 5m role and it works fine for about 5-10min watching a movie then the lights start to flicker.

    I bought a 5v 20amp power supply which should be plenty for the roughly 300led roll. I originally took the - from the led strip to the ground as you pictures but research on flicker led me to make sure it was grounded properly.

    So I moves the ground lead over to pin 10 per the sketch default but that did not fix the flicker. Does the ground on Arduino need to go to ground on power supply or can it be the - on the power supply?

    Any other suggestions ?

    I am getting ready to mount to TV and should have about 250 LED's installed.

    Thank You !

    • James Bruce
      December 21, 2014 at 7:59 am

      Hello anon.

      Flickering is usually an issue with ground, yes. I'm not sure why their sketch says use pin 10 as ground, because it isn't. You'll want to use the marked GND terminal on the Arduino. Every component should be grounded together, even though 5v power only goes to the strip. The negative terminal is the same as GND in this case yes (but not always).

  76. Gašper
    December 11, 2014 at 9:55 pm

    For Arduino, USB is sufficient.

    I would have question also..

    After connecting everything together, i want to test LED lights with Colorswirl.pde.

    It doesn't work BUT i tested them succesfully with other library (Adafruit_Neopixel_strandtest) from the internet.

    So, i dont understand the reason, why id doesnt work with Colorswirl.pde
    Below is pasted errors from this library. Would you maybe know the reason?

    1st error is at line 27: import processing.serial.*; ERROR: 'import' does not name a type

    Other errors:
    Colorswirl:27: error: 'import' does not name a type
    Colorswirl.pde: In function 'void setup()':
    Colorswirl:33: error: expected unqualified-id before '[' token
    Colorswirl:34: error: expected `;' before 'myPort'
    Colorswirl:39: error: 'noLoop' was not declared in this scope
    Colorswirl:44: error: 'myPort' was not declared in this scope
    Colorswirl:44: error: expected type-specifier before 'Serial'
    Colorswirl:44: error: expected `;' before 'Serial'
    Colorswirl:49: error: 'buffer' was not declared in this scope
    Colorswirl:58: error: 'second' was not declared in this scope
    Colorswirl:129: error: 'print' was not declared in this scope
    Colorswirl:132: error: 'println' was not declared in this scope
    Colorswirl.ino: At global scope:
    Colorswirl:27: error: 'import' does not name a type
    Colorswirl:29: error: redefinition of 'int N_LEDS'
    Colorswirl:29: error: 'int N_LEDS' previously defined here
    Colorswirl.ino: In function 'void setup()':
    Colorswirl:31: error: redefinition of 'void setup()'
    Colorswirl:31: error: 'void setup()' previously defined here
    Colorswirl:33: error: expected unqualified-id before '[' token
    Colorswirl:34: error: expected `;' before 'myPort'
    Colorswirl:39: error: 'noLoop' was not declared in this scope
    Colorswirl:44: error: 'myPort' was not declared in this scope
    Colorswirl:44: error: expected type-specifier before 'Serial'
    Colorswirl:44: error: expected `;' before 'Serial'
    Colorswirl:49: error: 'buffer' was not declared in this scope
    Colorswirl:58: error: 'second' was not declared in this scope
    Colorswirl:129: error: 'print' was not declared in this scope
    Colorswirl:132: error: 'println' was not declared in this scope
    Colorswirl.ino: In function 'void draw()':
    Colorswirl:138: error: redefinition of 'void draw()'
    Colorswirl:138: error: 'void draw()' previously defined here

    The similar thing happens when i want to test modified Adalight. pde

    If anyone could help me, i would be very grateful.

    • James Bruce
      December 14, 2014 at 9:47 am

      That's a Processing sketch - are you trying to run that in the Arduino environment? It should be run using the Processing IDE instead.

  77. Nicolas
    December 11, 2014 at 9:04 pm

    I have a little question : is it necessary to add a power supply for Arduino or USB is sufficient ?
    I will add of course a power supply for LEDs.
    Thanks !

  78. Vincent
    November 22, 2014 at 12:26 pm

    I found out what i did wrong yesterday... i was using a 6V 1000mA adapter instead of the 5V 2000mA. it worked fine after buying the 5V, thanks for the tutorial and help!

  79. Dan
    November 21, 2014 at 5:00 am

    This works if you watch movies/tv show on your pc hooked to your hdtv via hdmi and use media player classic?

    • James Bruce
      November 21, 2014 at 8:12 am

      Yes, works with windowed applications - some fullscreen apps which directly access the video card will have issues. WMP is fine.

  80. Henrik Skare
    November 13, 2014 at 11:04 am

    Also possible to get a complete set on EBAY if you're lazy.
    Price seems fair to me.

    Anyone know of any advantages to building yourself compared to the above?

    • James Bruce
      November 13, 2014 at 6:25 pm

      This is a little different; it uses RGB strips (10, in fact), rather than RGB pixels. The resolution is 10; compared to this project where the resolution is 100+. Still, this does look a lot easier!

  81. Vincent
    November 5, 2014 at 9:10 am

    Sorry for they many posts, I clicked send to many times... Yes the whole strip does light up. And the flikkering is.... it's like the movements are going to fast? I did notice something recently tough. I had to solder some parts together and it seems that the first few leds which are below the soldering that I did, don't show the flickering. so i gues there is something wrong with the soldering. And im using the exact same typ of strip as you are using. I will take a look at the ground cables/soldering and see if i did something wrong.

  82. Vincent
    November 1, 2014 at 9:43 pm

    Hello I was wondering if you could help me, i managed to instal everything but for some reason the led strip keeps blinking during video clips, Colorswirl works like it should but I cant get the screen thing to work properly. I have 37 pixels on top, 0 botom and 17 at each side so I made the code like this:

    {0,0,17}, {0,0,16},{0,0,15},{0,0,14},{0,0,13},{0,0,12},{0,0,11},{0,0,10},{0,0,9},{0,0,8},{0,0,7},{0,0,6}, {0,0,5},{0,0,4},{0,0,3},{0,0,2},{0,0,1},{0,0,0}, // left side.

    {0,8,0},{0,9,0},{0,10,0},{0,11,0}, {0,12,0},{0,13,0},{0,14,0},{0,15,0},{0,16,0},{0,17,0},{0,18,0},{0,19,0},
    {0,24,0}, {0,25,0},{0,26,0},
    \top side.
    {0,26,1},{0,26,2},{0,26,3},{0,26,4},{0,26,5},{0,26,6},{0,26,7},{0,26,8}, {0,26,9},{0,26,10},{0,26,11},{0,26,12},{0,26,13},{0,26,14},{0,26,15},{0,26,16},

    //right side.

    Do you have any idea whats going on?

    • James Bruce
      November 2, 2014 at 8:57 am

      To start with, the line that says top side is wrong. Comments are written with a double // - that would prevent your code compiling.

      Second, you've only got 27 pixels defined on the top - was that t typo when you said you had 37? If so, just fix that slash comment thing and you'll be good to go.

    • Vincent
      November 2, 2014 at 6:42 pm

      My bad, those were all typo's, right now it works fine with colours on the screen.
      BUT if i try to play any sort of media the whole thing keeps flikkering in the right colours, it's like its working but not as smooth as it should.
      As for the colorswirl, it works for 5 seconds, then it gets stuck, works again and occasionally flikkers this is when I fill in that I have 60 leds on both the arduino and processing. And when I change both to 100 then it starts working smooth. Any clues about whats going on?

    • Vincent
      November 2, 2014 at 6:43 pm

      My bad, those were all typo's, right now it works fine with colours on the screen.
      BUT if i try to play any sort of media the whole thing keeps flikkering in the right colours, it's like its working but not as smooth as it should.
      As for the colorswirl, it works for 5 seconds, then it gets stuck, works again and occasionally flikkers this is when I fill in that I have 60 leds on both the arduino and processing. And when I change both to 100 then it starts working smooth. Any clues about whats going on?

    • Vincent
      November 3, 2014 at 11:14 am

      My bad those were all typo's. Ive tested the colourswirl longer and when i put in the exact same number of leds (58) then the colourswirl will flikker once a while as well. BUT when i change the amount of leds on the arduino AND processing to 100, it will start to run smooth as butter.
      The moment i start running the ambilight is when everything starts to flikker again and I cant seem to find out why. it's showing the right colours but its acting weird and only during movie's, youtube, windows 8 tiles etc. any clue about whats going on?

    • James Bruce
      November 5, 2014 at 8:15 am

      What kind of flickering - does the whole strip actually light up, or just the first few pixels? Have you checked all the ground cables are connected? Are you using the exact same type of pixels, or have you gone with a different kind of strip? These also need to be defined in the Arduino software.

  83. Willem
    October 25, 2014 at 3:10 pm

    Thank you so much for sharing this project with us! I have tried out different Arduino and Processing tutorials to create my own Ambilight, but yours is by far the best! I have a Philips Ambilight TV with LEDs on the sides, but I want to use this tutorial to create LED on the top of my TV.

    I got it working with 30 LEDs, but when I try it with 60 Processing will terminate within 10 seconds. Do you have any idea why this might happen? What I would like to try is adjust the Arduino code so LED 1 and 2 are set to the color sent to LED 1. LED 3 and 4 the color to LED 2, and so on. I was wondering if you happen to know how to do this code-wise and give me an example. Any help is very much appreciated!


  84. Pichon
    October 3, 2014 at 5:39 am

    I really want one of this , can you make it for me ? I'm no good with pc or elec. i send the money for everything and somthing else for you time , this have to be plug to the pc all the time o just for configuration ? Please replay thx

  85. Don Hatcher
    September 23, 2014 at 7:55 am

    I have completed my installation and yes I did it for under $60. I still have some tuning to do to the LEDs to get best reflection on the wall, but other than that I love it.

    Thanks James

  86. Don Hatcher
    September 6, 2014 at 6:06 am

    After having basically killed a 5m strip of LEDs... I suggest building a frame ( I made mine out of adjustable curtain rods, the ones that slide inside themselves, they are cheap) this way you dont have to cut the strip and have to solder any of it. Trust me its its not east soldering these things. I have been soldering components for 40 years and I have never cussed as much as I did with these things. Also, be sure to have a really good grasp on configuring adalight... {0,17,23}, etc. this part has to be right. Best of luck to all. I should have mine up and running asap, I will post a video on youtube and share more of my experience doing this project.

  87. Rexxar
    September 5, 2014 at 9:50 pm

    Hi, do you know if APA104 leds could work, they are VERY similar with WS2812b? How much cpu load does Processing use? If i see a movie with VLC in full screen does this work? Thx for the "how to" very useful!!

  88. Don Hatcher
    September 2, 2014 at 7:56 pm

    I really recommend powering your Arduino with a 9v supply. I purchased this one and it works great.

  89. Tyler
    August 26, 2014 at 5:06 pm

    Does it matter what LED strip I use. I planning on trying to save money would something like this work instead:

    • James B
      August 27, 2014 at 9:17 am

      It does matter - those won't work for this project, as they only produce a single RGB colour value. This project uses individually controllable pixels, so the colour varies along the strip.

      However, I did a similar project a few years ago using those strips you're looking at, a single "pixel" ambilight basically: - the effect wont nearly as be as good as what we've done here, but you'll still get some kind of ambient lighting, as you can see on the video in the linked article. Note that my original project uses the wrong MOSFETs - be sure to get LOGIC LEVEL (LL) MOSFETs instead _ I think there was a commenter on the original who linked to suitable ones on eBay.

  90. Wes
    August 19, 2014 at 1:03 am

    I still don't get how the LEDs interact with what's on the TV screen. Yes you can use a small processor based controller, probably even an old 80C51, to control all the individually addressed LEDs via an SPI bus. But how do the LEDs track the color on the screen without having some input from the TV picture itself?

    • James B
      August 19, 2014 at 7:21 am

      It only works with output from a computer right now - the computer tracks the image via a java app that captures the screen, basically. I'm working on making it generic, but I need HDMI splitters and things from China - it's difficult because of built-in HDMI security, so you need split the signal, convert it to RCA, then analyse using a Raspberry Pi or similar.

    • Mark Cuda
      May 19, 2015 at 10:54 pm

      Any update on the splitting aspect? I would love to be able to cobble something like this together but do it without going through my main computer. Would love it on my xbox one. I know it can be done if I use let's say a LightPack and then run a capture card through my computer, but that's a lot of hassle and the added $$$ of a capture card.

  91. Don Hatcher
    August 18, 2014 at 2:21 pm
    • James B
      August 18, 2014 at 5:39 pm

      Excellent find Don!

  92. John Alexander Butler T
    August 16, 2014 at 8:05 pm

    Are there any off the shelf ready-to-go solutions available now (or in the near future)? Had Ambilight on PC a few years back and miss it! Only got one LED lamp backlight atm (either on or off, though you can manually change the colours).

    Darn u Phillips, you had a good thing going there (real product differentiator)...

  93. Kannon Y
    August 16, 2014 at 9:02 am

    The new formatting is really amazing.

    I'd like to eventually put together something like this - but the power supply seems a bit overkill for this particular kind of project. It looks like a picoPSU could be used instead, or am I wrong?

  94. Barrie M
    August 15, 2014 at 9:22 pm

    I think I missed the part where the Arduino knows whats on my screen. I read a similar tutorial on another site to do this with a raspberry pi and it seemed to only work on movies run via the pi. My point is I would like to use this on my monitor but I don't understand where the graphical data come into play.

    • James B
      August 16, 2014 at 7:26 am

      Step 8: Configure Adalight.

      In this step, you setup and run the Processing code on your machine. It's this that caputres the screen image, and sends the appropriate signals to your Arduino, which in turn drives the pixels. This will only work for windowed applications though - if you want to use it for gaming, you'll need to check out Ambibox ( with PlayClaw plugin.

      Anothger alternative is Prismatik: - which has a graphical setup (you drag around boxes to represent the individual pixels) , but i found this to be more tedious than simply writing code in Processing.

  95. Vferg
    August 15, 2014 at 8:30 pm

    I am a little confused at how this will cost just $60 bucks. The Arduino costs $33 without shipping, the LED strip costs $50 with shipping, and I don't have a power supply so as you stated that's $10 dollars more as well, plus a few dollars for double sided tape. Seems like I will need a small soldering tool as well. I couldn't tell but the 3 wires you did solder, do those come with any of the stuff you purchase or will I also have to purchase that as well? I really want to try this but the title is very misleading since it will cost about $100 if not a little more.

    • James B
      August 16, 2014 at 7:34 am

      Hi Vferg. Sorry of the confusion - I assumed readers wouldn't be purchasing *everything* new - so the $60 in the title covers the RGB lightstrip + possibly a PSU or an Arduino. I used an old, broken PSU that I'd previously converted, and if you need a new Arduino you can purchase a clone for $8 including shipping: . I guess if you had neither an Arduino nor suitable power supply, it would be about $70. Being resourceful is important in any DIY project.

      We're not going to include the cost of a soldering iron, solder, or small wires in any tutorials - if it's an electronics DIY, these kind of basic tools are essential and assumed to be in your possession.

      Apologies if this wasn't clear - DIY is a new section, so we're still learning how best to approach it. Perhaps a "required tools" step should be included?