Picture of Arduino Christmas Light Controller
If you liked this instructable, consider checking out my new website

You've probably seen all those videos where people make there christmas lights dance to music, you think to your self wow that looks realy cool.... i could never do that. WELL... you can the idea is actually quite simple.
a relay is a component that can be used to control large amounts of voltage or current with just a small voltage, it does this by using that small voltage (5 volts in our case) to create a magnetic feild that will pull a switch type object to connect the larger current (120 volts in our case). Image 2 is a diagram on how a relay works

Remove these adsRemove these ads by Signing Up

Step 1: Supplies

• 1x Arduino
• 1x Protoshield/ breadboard
8x 5v DC relays »»»
• 8x 1N4004 diodes »»»
• 8x 2N2222 transistors »»»
• 8x 1K (Brown,Black,Red) ohm resistor (radio shack)
• 1x double/single sided PCB (radioshack)
• 1x sharpie
• 16x nuts and bolts (discuss size later)
• 8x dead sets of lights (for there male plugs)
• 500 ft of 5 strand cable
• a set of connector things
• some wire and some other stuff that you should have
• a place to display your light show
• and a some what knowledge of making pcb's


Step 2:

Picture of
Once you have all your parts i started out by testing one relay on a bread board
1. Put all the components in acourding to the scematic (image 1)
2. Open the arduino program and goto open>digital>Blink
3. Upload it to your arduino
4. Connect where it says arduino pin on the schematic to digital pin 13

if all works well then its time to multiply that by 8 on a pcb

1-40 of 94Next »
eartaker12 months ago
Awesome, If you go to do this again you can save money and time by buying the 8 relay board on amazon for $12... I got tired of making my own relay boards... Code works awesome.
sotm eartaker11 months ago
Please provide the link?
mrv777 sotm11 months ago

I'm guessing he is referencing this one:

Dumb-Brit11 months ago
In the fashion of the Brits, we're ages behind in this sort of stuff but it is something I would love to have a play with. As I am a complete nooooob in all of this stuff, can I ask a silly question and hopefully get an answer? In part 3 making a pcb, there is a picture of the pcb fully soldered, any chance of putting labels on which soldered part represents which component? I'm having a hard time working out what the schematic should actually look like in reference to the top (if that makes sense). Cheers, Rob
MDheliMech1 year ago
After seeing another instructable similar to this I learned about the sainsmart relay modules. Everything is put together and it's cheaper than DIY.
sotm MDheliMech11 months ago
Please provide the link.
MDheliMech sotm11 months ago
The website is and look for relay boards. I did however end up following this instructable rather than buying the pre made board because I wanted the experience. I did not however do the Copper board I used pre drilled breadboard and soldered the components together. It worked for the most part however I had some difficulty with my seeed studio music shield that I couldn't seem to work out
sotm11 months ago
How did you connect 8 relays to only the 6 outputs the Arduino has?
MDheliMech sotm11 months ago
I am by no means an arduino expert. I can tell you from my experience arduino has more than 6 outputs. It has something more like 14 digital pins however I don't remember exactly. 2 of them I never use. Pin 0 and 1 are the comm pins. The rest if the digital pins I believe are 3 to 13 which can be digital in or out. There are 6 analog I/O pins which I normally use for inputs. I have experience with the arduino uno, nano, and pro mini, which all have this same configuration. The best bet would be to check out the arduino website to be sure.
jimdsouza12 months ago
Can I solder instead of etching? The voltage supply in my country is 220V 50Hz. Will the solder take so much current?
JKPieGuy1 year ago
Just wondering, instead of using crimps and vinyl electrical tape, why didn't you use wire nuts? They do make wire nuts that are designed to withstand the harshness of the outdoors.
MDheliMech1 year ago
Did you bring power in to your relays from 1 power outlet (wall socket) or multiple? Is there a problem running that many lights on one circuit?
MDheliMech1 year ago
Here is my setup so far. Arduino nano controlling LEDs which represent the relays, also controlling an Arduino UNO with an mp3 shield
13, 3:19 AM.jpg
MDheliMech1 year ago
In order to figure out delays for my project I used audacity. It is a free audio editor that allows you to see a point in a song down to the millisecond. Find two points where you want events to happen and subtract one from the other. That will be the delay.
MDheliMech1 year ago
Thank you for this tutorial. I am in the breadboard stage of my build. I will be using the relay circuit with an arduino as you demonstrated. My variation however uses an MP3 player that is also controlled by the arduino. This allows for the music and the light sequence to be played in sync every time. Unfortunately because I want events to happen at specific times I have to write the delays out in the sketch as you did. I will also have multiple songs each with its own individual sequence. I hope to include pics and videos soon.
espongy1 year ago
Hi! Was the 120 volts based on your socket voltage? What if we have 220V? Thanks!
Your project is fantastic but i was looking to do it with a different song and i was wondering if there was any particular way you worked out the delays? (maybe a push button you tap to the beat and records the delay?)
dany32412 (author)  PoisonMondo1 year ago
I took a sort of brute force and ignorance approach. I simply sat down and played the song, and wrote out all the delays by hand. The down side to this is that i really can't play the music through speaker or something, so all i did was overlay it onto the video.
JLeith2 years ago
Hello dany32412,

I'm 100% new to Arduino world but I would like to enhance my Christmas yard display I have been building the display for 30 yrs and now that I have retirement time I thought I would look into making the display a little more active.
I like your project for Christmas Light Controller and the addition of the Vixen Software.
I’m not sure which Arduino you used ?
When I look at the Arduino UNO it indicts 6 outputs and your project uses 8 ports ? unless I’m reading the spec sheet wrong.
I have just entered the world of programming a PIC for a baseball scoreboard and now I have time to look into the world of Arduino.
Hopefully someone will still this even though its been awhile. I'm trying to hook up some christmas lights to my arduino using your same circuit schematics. When I hook it up on the breadboard the relay clicks for when the blinks should occur but the lights do not blink or go on at all. Any ideas for what's going on?
sorry for the late reply.Do the lights light up when you short the terminals you connected to the relay, If they don't then they are not powered correctly, if they do then there is a problem with the relay/relay board
Blakamiss482 years ago
Just want to say thanks! Followed your design and worked great. Set this up last Christmas(2011) to go with our christmas display.

Boards and wires picture

Video of the light show
Also used vixen to create the sequencing.
rpdthree2 years ago
Out of curiosity, have you thought of ways to dim the lights? I am fairly new to the Arduino platform and electrical engineering in general, but would it be possible to use some sort of digital potentiometer instad of the relays?

If not, do you have an ideas on how to easily dim the lights?
dany32412 (author)  rpdthree2 years ago
I would say that you can't dim incandescent bulbs (like the ones i used), but you could probably dim the new LED ones. You could swap out the relays for some high powered transistors, and send some PWM (Pulse Width Modulation) signals to it. I'm not sure if that would work or not, but theoretically it should. If anyone knows more about this, or can disprove me, please post.
Yes, you can dim lights as well as LEDs by using PWM. The only thing intrinsic to this project that would require a rethink is that relays aren't suited for driving PWM circuits. You would have to consider solid state switching options using something like a transistor or FET. For switching higher voltages it's a good idea to use opto-isolation to the uC.
pclever3 years ago
Hello, I didn't use the resistors on my pcb and everything works well unless there is more than 3 relays on. Can the arduiono only power 3 relays, or did I need the resistors?
dany32412 (author)  pclever3 years ago
I would recommend putting the relays on a seperate power source, and just control that feed with a transistor. That's what the board was intended for, but i was stupid, and just got the 5v from the arduino's regulator. Goodwill will have plenty of extra "wall warts", just make sure it's rated for minimum 1A. Hope this helps.
pclever3 years ago
Sorry, I found out that if I add more voltage it fixes the problem, but now the arduino is getting very hot. Is this a problem?
dany32412 (author)  pclever3 years ago
yes, that is a problem. Sorry back then i was stupid, and should have ran the relays off of a seperate power supply. The regulator on the arduino can only handle about 500mA of current.
dcopeland13 years ago
One thing you have to pay attention to is the 120 volts that comes from your house is a RMS voltage. Never hook up the ground on your AC to an earth ground. Go through your common as this is where your current comes from. Your voltage is on your potential side. I would also make sure the gate is rated high enough so that if there is a spike in your voltage it will send it to the ground thus dropping your voltage to zero.
donphipps3 years ago
Is there a way to hook up to computer va USB port, i am looking for a way to make light blink to music.
Just thought I'd pipe in here. Vixen, an open source software that sequences audio to digital events, will pipe it's output directly through an arduino (connected via USB.) I am planning to use this to run my Christmas light show as I have a spare desktop to run the program in the garage. In this type of setup, the code on the arduino only tells it what it needs to know to become the generic plug-in for vixen and doesn't actually contain code for the sequence, so this wouldn't work if you wanted a standalone.

Beyond the arduino outputs, everything should be the same as dany's setup. Then your songs/light shows are only limited to your patience with the sequencer.

Unfortunately, like you, I am still in the production phase and don't have a finished product to show such as dany's. I am as far as running some test LEDs with the sequence on a bread board, so theoretically, I'll build the board with the relays and be good to go...
dany32412 (author)  blangston13 years ago
WWWWOOOOWWW!!!!! That's awesome. Thanks blangston1 for introducing me to Vixen. I think i might put the lights up again this year, but this time use vixen to sync the music with the lights (my old process was very inefficient). You could probably put an xbee on a computer, sending all the data to remote controller box out in the yard. Then just run some speaker wire from your computer to a speaker, and boom your set. I might note that i have had issues with the arduino sometimes getting too cold, and actually getting kinda buggy. To solve that problem I'll probably have have to make a climate controlled box with a heating coil and some insulation. Once again, thanks for showing us Vixen, and i hope all goes well with your project.
No problem! I'm glad you think it might work for your setup.

I like your idea about the xbee and the climate controlled box. However, part of the deal in getting my wife on board with turning our house into a musical light show involved committing to a budget of practically $0, so I'm working with only components that I already have. But thanks for the tip about the temp of the arduino. I realized that my crawlspace door in the floor of my guest room closet is within a few feet from the nearest crawlspace vent to the front yard. I think I'll set up the whole operation in my climate controlled ;-) guest room, and run the cables beyond the relay through the crawlspace to the front yard.

I also plan on using an FM transmitter to play my music. A buddy that's helping me with some of the wiring work told me that the range of the common dashboard mp3 player transmitters can be boosted by simply soldering a longer wire to their antenna on the cb and coiling around a rod. I guess we'll see if that actually works or not.

Let me know if you can't find the vixen plug-in code for the arduino, and good luck to you too!
dany32412 (author)  donphipps3 years ago
You could possibly connect a little microphone and make VU type of a thing. You know how djs have those meters that show the.... beat in the music. (i dont really know what it shows) Other than that, i probably could help you. Try posting on the arduino forum.
EdDruino3 years ago
this is my version of your pcb, it's a grate project and i will make it for this christmas! nice itable!!
Nice job. I am combining your idea with a portion of one of the Daft Punk projects -- the part that takes input from a stereo mini plug to the Arduino's analog in 0. My question concerns the PCB. I see that you made separate
traces for the power source to the relays and connected them together with wire. Was there a reason you didn't connect the wire once and combine all the power in traces to the relays into one long trace? PCB overheat?
dany32412 (author)  psychodot54153 years ago
Sorry i didn't message you earlier, but it was actually a pcb design flaw. When i made the pcb i wasn't thinking, so instead of making a new board i just jumped them with wires. It made me mad, cause now it's pretty ugly.... but what are you gonna do. If i were you i would just jump them using copper traces, you shouldn't have any problems. Good luck
I finished and published. Check out Thanks for your help.
1-40 of 94Next »