This project began as a need to fill an empty 6’ by 12’ wall in my living room above the couch. Since I have an weakness for flashing things, I thought, “what better to fill that space than lots of lights making colorful patterns?” Thus the idea for the Aurora LED wall was born. This is my largest and most involved project to-date (involving soldering, woodworking, and microcontroller as well as PC programming), so I wasn’t sure how it would turn out; but it ended up coming out much better than I expected. If you like the vids/pics/description here or have some thoughts on improvements to the wall, please let me know in the comments below!
The lights in the Aurora consist of a grid of 544 RGB LEDs capable of ~16 million colors attached to a 4’ by 8’ wood board. The LEDs are controlled by a microcontroller, which is in turn controlled by a program running on a laptop. The computer is the brain of the system, being responsible for creating the graphics that appear on the wall, and the microcontroller relays the messages to the LEDs. The PC software connects to software running on an iPad, which allows interaction with the moving patterns. Also, the Aurora has a mode where the builtin programs respond to music, bouncing and flashing with the beat, turning it into a VJ of sorts.
There are several programs implemented so far. One is the Belousov–Zhabotinsky reaction, implemented as a 2D cellular automata (kind of like Conway’s game of life but less pixelated and more colorful). The idea for the graphics come from a cycle of chemical reactions that oscillate as some chemicals are used up and others are created. The resulting patterns look like smooth waves of color that sometimes repeat in a loop and other times diverge. With the iPad, you can perturb the automata with your finger and see what happens, control the speed of the visuals, and sharpen the edges of the pattern. It’s worth checking out the Wikipedia page and the video above as it makes some awesome patterns. Another visualization uses Perlin noise to create constantly changing flowing blobs of color. Perlin noise is a type of computer-generated noise that injects randomness with a harmonic structure so that the smoothness or roughness of the blobs can be controlled. Interaction via the iPad lets you control the speed of the blobs, their size and their complexity. Yet another program displays a flickering fire, kind of like the old TV channels, except about 8 feet wide. It allows you to customize the color scheme so the flames can range from the standard yellow, orange and red to something like flickering pink with a green background. There are other programs as well (such as a mode where you can paint with your finger) and the code is structured so that it’s easy to create new ones that take advantage of the color palette features described below, the iPad control and the music responsiveness.
The color palette used for the graphics is highly configurable, allowing the different visualizations to change mood, so to speak. Using the iPad, you can choose from popular color schemes found on Adobe Kuler (an online repository of color palettes), or use a random starting color with a number of different color theory strategies (e.g. complementary, tetrad, analogous, etc.) I didn’t know anything about color theory before this project but it turns out you can intelligently find colors that go well together. This is especially useful since I’m not so great at choosing colors myself. If you look at the video, you can see the different types of color schemes available.
One of the components of the wall that both added complexity and improved the aesthetics was diffusion of the LEDs with translucent plastic. This made the wall take on a more organic form. In my opinion and based on comments I’ve received from past projects, bare LEDs look very digital, in part because they create discrete points of light. Diffusing them results in one continuous canvas instead of a grid of little bright point light sources. If you’re curious, here’s a pic of what the LEDs look like without the diffusion. To do the diffusion, I attached some prismatic acrylic lighting panels (the ones found in front of fluorescent ceiling lights) to the board about 5-6” away from the LEDs. I chose this distance empirically: too close and not much diffusion occurred; too far and the pixels melded together. It was tricky (at least for me with my lack of carpentry skills) to keep the flexible plastic at this distance; you can see the build details below if you’re curious how it ended up being worked out.
Something I struggled with was whether to use a microcontroller (e.g. an Arduino) to generate the graphics or use a PC. I originally leaned towards the microcontroller route because I wanted the Aurora wall to be of a self-contained unit that didn’t require booting up and plugging in my laptop every time I wanted to use it. The flipside is that microcontrollers are obviously not as powerful as PCs, so the visualizations wouldn’t look as good. Honestly, they’re also just harder to program. I ended up deciding on the PC route after I realized that I could replace my laptop with a Raspberry Pi (assuming I can get one!).
Anyway, hope you enjoy the Aurora LED wall! Be sure to leave some comments about your impressions below. If you’re curious about the build details, you can find them here.