If you’ve seen Stranger Things, you probably know what I’m talking about when I say “Christmas lights wall” — the ingenious contraption that Joyce rigs up to communicate with the Upside Down.
I though it was so cool that I decided I wanted to make a wall of my own.
- 1x Arduino Uno (or a knockoff brand like I used)
- 1x 9V 1A Power Adapter for Arduino
- 100x (total) WS2811 Addressable LEDs
- 1x 5V 10A power supply, I used one similar to this one
- 3 total pairs of DC Power Jack adapter Male/Female pairs
- Cheap Retro style Wallpaper, I used this which is no longer available
- Black paint for the lettering
- Paintbrush, a medium-width bristled brush works best
- Thumbtacks, pins, or nails to hold the lights up
Step 1: Getting the lights ready
Out of the box, the lights won’t be very useful for what we have in mind so we’ll have to wire up new power connectors with our DC power jack adapters.
First you’ll need to cut and strip the power and ground wires. On the lights I received I was able to tell that the +5v was red and the ground was blue by looking through the clear coating on the outside of the light.
If you’re not sure which is which on yours and you’re not able to see which is which through the light itself, consult the WS2811 datasheet for help.
Once we have the wires cut and stripped, we can run the +5 to the + terminal of our female DC jack, and the ground wire to the – terminal and tighten them down. This is where our power supply will plug in.
If you’re like me and got multiple strips of lights, you’ll need to go through the same process on the other end of the strand, only this time with a male adapter.
Repeat these steps for all other light strips.
Once you have all of your adapters attached, you can then string all of your lights together with your male/female adapters. I also put a little tape on them to make sure they stayed together, and to shorten the amount of excess wire.
We’ll also plug in the data adapters at the ends of the strands.
Finally, we’ll run wire from the end of the lights to the Arduino.
Once you get the strands ready to go, it’s time to get down and dirty with some decorations.
Step 2: Decorating
For the decorations, I went pretty simple. I took the retro wallpaper, the paint, and the paintbrush, and painted the letters A-Z in two rows on one end of my “wall”.
I then laid out the lights, making sure there was a light above each letter so that it was easy to tell which letter was “on”.
And one last little detail, I cut a small slit in the wallpaper so that I could run the wires behind and tuck the Arduino away out of sight.
Then it was time to get to the fun part — bringing it all together with code.
Step 3: The Code
The full code can be here but I’ll do a quick overview of what it does.
The code loops over 4 main function:
fullBright simply turns all the lights on to look like normal Christmas lights
flicker causes the lights to briefly flicker, turn completely off, then slowly come up to about 120% of the brightness of fullBright
followMe causes the light to completely turn off, then start at one and and turn on light by light all the way to the other end, accelerating along the way — as to say “follow me”
stringToLights takes a string and prints it along the letters on the wallpaper. This is done one light at a time, and turns off after each letter
showAllLetters is a debugging mode so that all the lights over letters light up to make it easier to arrange them and tweak the code to match your setup.
Once you have the Neopixel library installed and you have your code uploaded to your board, it’s time to test everything out.
After getting all of the lights lined up and getting the code edited to match your setup, this will be the final result: