This is our third project. A 32x16 RGB Led Matrix divided into segments of 8x8 Leds with Ping Pong Balls as diffusors.
The main challenge for this project was to control 1536 individual LEDs (512x RGB) with only one ATmega328. Not enough, we also claimed to have PWM one each LED.
What we achieved is a system that is capable to drive 512 RGB LEDs with 216 colors each and a frame rate of 20 fps. Furthermore, the microcontroller is still capable to manage real-time data transfer from a host PC via UART. Probably you may ask: Why 216 colors? This is a compromise between available memory (2 kB RAM) and speed (PWM, ...). Here we used six states for each color resulting in 216 colors fitting just well into one byte (256 different states). Therefore we only need 512 bytes of RAM for the complete matrix and PWM is still fast enough to manage the given color depth. We believe that this is really on the edge of what is possible (with Atmega328 and this design).
The matrix has two modes: First, it just receives data from a PC (via Processing) and displays it. In second mode the µC itself calculates a plasma algorithm real-time without any external connection. The mode can be chosen by a simple hardware switch on the back side of the wall.
The matrix is build modular in sections of 8x8 LEDs, thus it can be easily enlarged. However, for the moment we spend more than enough time in soldering and wiring. The size of one segment is 40x40 cm which makes 80x160 cm of wall size in total. Eyecandy!
Here is a video after finishing the first segment:
As already mentioned the total matrix consists of eight of such segments. Each segment is controlled by one LED driver mounted on the backside. The LED driver has four 8 bit shift registers, 8 transistor and resistors, data-in and data-out plugs (2x2 RJ45) and a 34 ribbon cable plug (only 32 used) for the actual LED contacts. The data-out junctions serve as input for the next segments. The ATmega328 sits on a separate main controller board. Some nice images and schemes about data transmission of the LED driver and main controller boards are show below.
After finished all 8 segments we just plugged them together and for stability and aesthetic reasons we put a wooden frame around them. Below you can find some unsorted images and a first video. Probably we will create another clip since we didn't show all of its capabilities. E.g. we are already able to stream any video source (web cam, video, ...) to the wall but we are still not happy with the colors, we need to tweak a little. In addition, we need to be a little bit more creative and invent some nice stuff to display.
The partlist can be found here: PartList Modular Plasma Wall. We hope we did not forget too much!
You can find the source code in the download section. It is written in the arduino software environment which makes it easy to develop code and upload it to the board. But you can open it with any editor and you can use the C-code in your project if you like. In addition you can find the source code for the Processing program that is used to pass animations from PC to the plasma wall. Note that the microcontroller on the main board has to be in remote mode for receiving and displaying data from a PC. The remote mode is activated by switch SW1 (see schematics).