Light Show Website Update!

I’m happy to announce an update of the Arduino Light Show Project’s website! The update is mostly aesthetic changes, with a few added animations here and there.

As for the next show, progress has been slow but I hope to ramp it up a little bit. I’ve been sitting on half of an update so I should have an update posted by the end of the week.

Thanks for visiting the blog and I hope you like the ALSP website update!

Code dump of Light Show files

I wanted to let everyone know that I’ve dumped all of my Light Show code files (.ino) into a directory over at the Arduino Light Show website. I’ve lost some files over time so all of the files you see in that directory are all the files that I have. Hopefully this ends the requests (and straight up demands) for code.

Update (10/17): I decided to do a little more work on the Light Show website. The Code Directory is an actual page now and you can now watch each video directly on the website.

“How do you program the light show?”


Programming the Light Shows really isn’t that complicated, just time consuming. It seems to be a mystery for a lot of people and I still don’t really understand why. Not a lot of people seem impressed by my crude technique (people always seem to expect some kind of audio processing). In this post, I’ll share some of the things involved in programming the light shows and you’ll finally see how simple it is (again, it’s just time consuming).

The Functions: The show’s programs are made up of delays and for-loops. To use the hardware, the program uses basic digital and analog write functions, as well as the servo library.

The Process: The process is simply replaying the song over and over again and adding more code to it on each run. I work on the song in verses that I mark off in the code using either a line of ////////////// or the first line of lyrics of the next verse, commented out of course. Doing it in verses gives me points where I can decide to take a break… but really, it helps me keep track of where certain pieces of code is so I can go back to it and tweak it. Sometimes I will put a really simple pattern just to figure out the timing and then go back to it later and add more effects to that section.

Cuing It Up: I use VLC to play the song when I’m programming. In the earlier shows, I used to try and cue the song manually by watching the blinking TX lights on the Arduino as the program uploaded and then started the song once it was complete. It was kind of a guessing game that I’d figure out well enough to get things done. Eventually I realized I could just have an LED counting down like this:

// Count down (4, 3, 2, 1)
for(a=4; a>=1; a–){
digitalWrite(22, HIGH);
digitalWrite(22, LOW);

Time: It takes about a week to program 1 minute of show. I try my best to create fresh patterns so it gets incrementally more difficult as each new show is released. It’s also gotten harder as I’ve added more components to the stage in the later versions of the light show. This is why the shows have gotten shorter over time.

CAN I HAVE THE CODE?!!?: Yes! For the first time in a long time, I’m releasing code for some of the shows, specifically the most recent three. You can get the files here:

I hope this has answered your questions about programming the Light Show. If you have any more questions, send me a message or leave a comment. Now go out and blind yourself with LEDs like I have!

Light Show 3: Jumped the shark?

After just two videos, and neither of them programmed to songs, I’m calling the light show project done. Forever. Or at least for now.

The build was everything I expected it to be, and yet it still felt incomplete. That’s the way I feel about all of my projects, though. There was more than enough to work with, even with this feeling, and that contributed to the early end of this project. Having servos in the light shows make them unique to just LEDs laid out on a breadboard like my first experiments with Arduino. However, it also complicates things because I had to figure out ways to have the LEDs and servos do things simultaneously. It becomes a lot to take on when it takes hours to produce a few seconds of a show.

The next reason I’m closing up this project now is so that I can focus on other projects. This project is sort of the “fun” project, but lately I’ve been trying to find more practical projects like the temperature and humidity monitor and the light timer. In the end, the goal is to have an end product that I can show off, possibly to future employers.

There may be a future for the light show project down the line, but it’s not in my sights at this point. On a somewhat related note, I did do one experiment while I was working on this project.

IMG_20140128_124709I’ve always thought of using my Nexus 7 tablet as a screen. I think it would take most of the focus off of the LEDs to give me an easier time programming. However, it complicates things because I’d be more comfortable having original content on the screen which I’m not capable of doing.

The grand vision in the first place, at the very beginning of these light shows, was fountains. The inspiration for these light shows originated from World of Color at Disney California Adventure so it’s not surprising that replicating the show to some extent would be the goal. I’m not quite ready to work with water yet, though.

So that’s it for this one. Another project is already queued up and I’ll have details on that soon. Thanks for reading!

Light Show 3: VB Control Panel

Last Friday, I posted pictures of the completed stage for the new light show. I wasn’t sure where to begin so I decided not to immediately jump into programming it to music but instead create a control panel in Visual Basic for it. I used the things I learned from the Temperature and Humidity Monitor project and applied it here.

It works the same way but on a larger scale. The VB program sends a 15 character string and the Arduino splits it up and stores the smaller segments into different variables. The stage is split into groups: servos, tower LEDs, breadboard LEDs, and spotlight LEDs. One digit is used to select the servo/LED you want to control, another digit is used to set a value to the LED (three digits for the servo position).  There is no feedback from the Arduino but since this is something only I’d use, I didn’t see the need for it. I’ll know if a command doesn’t work.

I will program the stage to music soon in the same way I always have through the Arduino IDE in C. When that’s done, the VB program will be able to start a show from the panel. Previously, I cued the music by using an LED to countdown to the start of the program. I’ll still do that while I program, but the final program will have the VB program counting down (or possibly playing the song itself, I haven’t tried that in VB yet).

Here’s a video demo of what the VB program can do so far:

Light Show 3: Build Complete!

The last two days were dedicated to building the new stage for the light show. I’ve gone back to basics, almost mirroring the first light show I made with servos. My last light shows weren’t very popular, and that’s probably because I tried to hard to use up all of the pins on my Arduino which made it harder to program. This one will be tough to program again, but there is less to worry about.1Building the towers to hold the servos went fairly well. This time around, the towers have white LEDs on them and are a little taller. Also, the materials are already white so I don’t have to cover them up at all.
2The bottom of the towers have the openings for the LED wiring to come out. All but one LED managed to stay wired after taping the towers closed. I cut a little hole to get behind that one LED and it turns out the LED itself was damaged, not the wiring as I first thought.1This is the final result. It really does look like an evolved version of the first light show project.2… I don’t want to deal with anymore than this.
3 So that’s it for now! Programming will start soon. Thanks for reading!

Arduino Light Show 3: ShiftPWM Test

Planning for my new Arduino Light Show, now into its third version, has begun! 1I decided to try something new to get more RGB LEDs into the show. I followed this tutorial to set up 8 RGB LEDs.3The circuit wasn’t very hard to set up. Other than some colors being accidentally swapped, I didn’t run into any issues with it.2I think this really sets this next light show up for some really good sequences. The plan is to expand the number of RGB LEDs driven by this method to 16. This is in addition to the 70 pins available to me on the Arduino Mega, 12 of which are PWM (allows for fading and dimmed LEDs).

Here’s a quick clip of the rainbow sequence that’s included in the shiftPWM library:

I’m still working on the stage plan. I want to keep it somewhat simple but I also want it to look impressive. It’ll be a while. In the meantime, check out my previous shows.