DIY | Ambilight Using Arduino Nano





Introduction: DIY | Ambilight Using Arduino Nano

About: Hi there visitor! First of all thank you for checking out my profile! My name is Youri. I study Technical Computer Science in the Netherlands. I especially love the electronical part of my study. Since I l...

In this Instructable I will be teaching you how you can create your own (b)ambilight for under $40!
Keep in mind that the Ambilight will only work on a PC running the Bambilight software.

You will need the following components:

  • Individually addressable RGB LED strip - Available on Aliexpress
  • Arduino Nano
  • Mini breadboard
  • A few breadboard cables
  • 12V DC Power Adapter
  • Double sided tape
  • 4-5 Paperclips
  • Zip Ties

Step 1: Watch the Video Tutorial!

Step 2: Testing Your LED Strip

It would be a pain in the ass to remove the LED strip when it turns out one of the LED's isn't working. That's why it's a good idea to solder temporary wires to your LED strip and test it using your Arduino, the power adapter and the .ino file (can be downloaded in step 3). Upload the .ino to your Arduino. You don't have to configure anything yet. You should see multiple colors waving through the LED strip.

You can wire the LED strip using the image provided in this step.

My LED strip (link in parts list) uses the WS2811 IC to control 3 LED's individually.

Step 3: Mounting the Electronics Onto Your Monitor

Before sticking the LED strip to the back of your monitor make sure to clean it as good as possible.
To get rid of any dust I suggest using a fiber cloth.

Once you're sure the surface is clean you can measure the length of the LED strip by holding it next to your monitor and cutting it to the right size. Make sure the strip on the opposite side has the same length.
After you've cut all the pieces to the right size you can stick them to the back of your monitor. Because the glue usually isn't the best quality I suggest using some pieces of double sided tape to improve the stickiness of the strip.

IMPORTANT: Make sure the arrows on the LED strips circle around your monitor! If you mess this up you have to start all over!

Once the strips are in place you can mount the breadboard with the Arduino Nano to the back of your monitor. Make sure to mount it in a convenient spot, because you need to be able to plug the USB cable into your computer later on in this project.

Step 4: Soldering All the Electronics

To solder the LED strip I used a few paper clips and bend/cut them to the corresponding size.
After that I soldered them to the LED strips to connect them together. You could use some shrinking tube to prevent short circuits, but in my case I didn't need any. To make it look a little bit better I used a permanent marker to give the paper clip "wires" a black color.

Now connect the LED strip to the Arduino using the same schematic as shown in step 1. Plug in the USB cable, install the FastLED library and upload the code provided in this step into your Arduino.

You may also connect the power adapter now since we're done wiring.

Step 5: Configuring the Software

Download the Bambilight files (link in the introduction).

Open up the .ino file and edit the following lines to fit your situation:

#define NUM_LEDS 38
#define BRIGHTNESS 100

Now upload the file to your Arduino.

Open up Bambilight.exe located in "[Location you saved the Bambilight folder]\Bambilight-master\Bambilight-master\Binary".

Now configure it to your likings and test it using a test video like this one.

Once you're satisfied with the result you can minimize the Bambilight program.

Step 6: Sit Back, Relax and Enjoy!

And......... you're done! Now all that's left is to grab some popcorn and some soda and enjoy your favorite movies!

4 People Made This Project!


  • Casting Contest

    Casting Contest
  • Make it Move Contest

    Make it Move Contest
  • Microcontroller Contest

    Microcontroller Contest

We have a be nice policy.
Please be positive and constructive.

2 Tips

I've noticed a big problem with your LED Strip that you've linked in your instructions. The fact that on this strip three LEDs are adressable as one group (in bambilight one 'spot') and not adressable for every single LED was not clear to me..

Maybe you should point the other users towards this problem and link an alternative LED Strip like this one:

I've ordered these now and hope I'll get it as nice soldered as my first try :D

Hey, thanks for the project. It's super cool and super easy to make.
I did it and I love it.

The only strugle I had is that I have 100 leds and when you start Bambilight the whole strip just freezes. So I looked through the .ino file and found small bug in the code:
if you change

uint8_t led_counter = 0;
uint8_t byte_counter = 0;


uint16_t led_counter = 0;
uint16_t byte_counter = 0;

everything works fine. (NEEDs TO BE DONE if you HAVE MORE THAN 85 LEDS in strip) !!!!!!!!!!!

and I was wandering if you can give the source code for bambilight, cause on my PC it often stucks on green colour, when you test the project on videos like you provided.

Anyways many thanks to you and keep on doing such grate thigs ;)


Hi guys, thanks a lot for the article !

I tried to follow the steps but I get this error when uploading the code to the Arduino :

invalid conversion from 'byte* {aka unsigned char*}' to 'char*' [-fpermissive]

Apparently the issue is in the line : Serial.readBytes(buffer, NUM_BYTES);

Any idea ?


Hi and thank you for your working but when I have a problem with ino file. When I want to built the broject ı am taking no such file error for "#include "FastLED.h"". I can't find this file. Can you help me,please?

1 reply

I solved my problem :)

See my reply to "sfranch" above

Hi there, I need some help My led strip has 4 connection. How can I able to connect this strip with my arduino?? what will be the code,, please help. Thanks

here is the link...

1 reply

The LED strip you have will not work with program. They are what I call "DUMB" LED's. You need to purchase "SMART" LED's, WS2811, WS2812, etc. These LED's have chips built into them that allow programs to write to them and controll each LED seperately.

  • "The windows store netflix app (player components are visible to adrilight but the actual video is not, netflix in the browser works)"

Not working with Netflix on windows 10 (64bit) works fine for youtube and everything else.

Hi, i have managed to build this, but there is one problem, my led strip stays on even when PC is turned off or in sleep mode, please help mi to fix this issue.
Thank you very very much,

1 reply

You can just unplug the arduino or make a switch(sry for bad english)

Hello !
Great guide ! But I have a problem, the lights works fine, I can have the rainbow wave but bambilight (and ardilight ) don't work. When I check 'output led' it only stops the movements of the wave but the rainbow is still there..
Any suggestions ?

Hello, I am trying to build your system with some WS2812b 60 led per m.

I wanna do a setup for a 23'' screen. So I am estimating 2M max (120 led).

I found all the componants on (except the LED strip). Will this 12V 3A Power supply be okay? I am really struggling to find the right parts.

Also, I have a 42'' TV attached to another GPU on the same computer. If I want to do to the same project, I estimate 4m max of LED (240 LED). What kind of power supply will I need for it? Will the 12V 3A work with it too? Thank you


after connected everything right got the Leds working while unchecked
the "OUTPUT LED" in the software and when i do checked it the Leds
turns off..

whats the problem?

I am using Nano atmega328 with strip 300led its giving me not enough memory. Any solution to this?

The shell doesnt open when executing the .exe from bambilight. The arrows and dots are there but theres also no way to make them disappear without closing the whole program.

Additionaly, when I execute the bambilight, my whole CPU is used and I cant start a video or anything else

Hi, i have an arduino nano with an atmega168 chip.

The arduino IDE loaded with your source file says that global variables occupy 1057 bytes of dynamic memory of 1024 bytes max and refuses to load it to chip

Any idea of how to reduce that 23 bytes of memory????


PD: With an Arduino Leonardo loaded the file successfully

2 replies

autoanswer: reducing the number of leds make the source works (from 120 to 114 max)

edit: it compiles and uploads to the arduino nano, but only lights up the leds, but does not cycle through colors

Why doesnt this work ingame?

And is better one on one strip or three on one strip?