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).
Comments
First of all one block of 8x8 will be total 64 leads, you said your project is of 32x16 which is 512 leds then why would you need 1536 leds?
Each RGB LED has 3 LEDS internally so in reality you are controlling 1536 LEDS (3 Wires per LED and Ground.)
I hope that helps.
I managed to project RGB LED Matrix - Modular Segments and I could use the Modular Plasma Firmware file and the program I set up Main_Program_Pr ocessing matrix.
But my problem is the lack of implementation of these programs by Glediator and the lack of a file to identify Shift register 74HC595 is by Glediator.
WS2801 and WS2812 identify the files you've placed on your site but not on file for identification RGB Led simple.
Please advise me how I can and I set RGB Led Matrix by Glediator identification. Thanks
If i want to use only 2 Segments instead of eight, do i have to change the code, or isn´t is necessary when using Glediator ?
At the time i can only build 2 segments because of money :)
Thanx.
This is fantastic project. I build my display. See her: https://vimeo.com/106098926
I will sell the PCB at the shop put i see only 2 data 1 in and 1 out,
but on the pictures i see 2 in 2 out??
How we can fix this???
cheers!!
i want use a arduino mega for this proyect but i cant understand, how i can make the comunication with the program to arduino
I can use the program for the plasma wall "Main_Program_P rocessing.pde" to connect my arduino mega to PC
Could you tell us how to connect a pc running glediator to the main board . Do I need to go via an ardiuno ? Do I need to load a sketch?
Cheers
it is a awsome projekt! : D
what if i put a cat6 in prog2 and from there in my pc what do i need to change/will it work?
cheers
http://www.youtube.com/watch?v=wY6oiEhyfIc&list=PLD86C5686FF01206A&index=3
Cheers
cheers
yes - the connection is done that way. You can easily calculate the max current and thus the optimal power supply by yourself:
First you need to decide which max. current your LEDs are running. In normal (no PWM) mode the current should be around 20 mA (not above 30 mA) per color which corresponds to R=150 Ohm resistor in front of every color column. In PWM mode you can go higher (up to 100mA in 1/10 cycle). As far as I remember we used 80 Ohm resistors (not sure anymore). Anyway ... let's calculate the max current for 20mA per color in the worst case where all LEDs are on (! due to multiplexing, only one row is active at one time): 3*8*20mA = 0.48mA per Segment. Now you can scale it to your needs.
Hope this helps, Thomas
Cheer
5V DC with enough ampere from your need plus 10% buffer. You can get the power supply/adapter from eBay. Make sure you calculate the power for each 8x8, around 0.5A (0.48A exact) each, multiple the number of 8x8 matrices you have
I think Thomas meant 0.48A not 0.48mA above. And, yes, at any given time, there is only ONE row turned on; however, thanks to POV (Persistent Of Vision) from the eyes, if the rows are individually turned on and off fast enough at the right frequency, the entire matrix looks like all the LEDs are on.
Thanks
sorry, I don't get your question. What and why do you want to change in the firmware?
to use common anode RGB LED, thank Thomas.
yes, the LEDs have a forward current of 20 mA per color.
¿Was soll ich tun, wenn ich "gemeinsamer Anode" RGB LEDs setzen?
Thanks guys
Cheers!
Cheers!
Cheers!
1. can y use an arduino mega (http://arduino.cc/es/Main/ArduinoBoardMega) for this project?
2. if so what do i have to modify ?
3. your program Gladiator will work with Arduino Mega?
yes you can take Arduino Meaga instead.
However, we would highly recommend you to build your matrix with these guys:
http://www.solderlab.de/index.php/led-projects/matrix-controller-board
They are fully supported by Glediator, have more colors and are more convenient to build for you.
Cheers!
Hi guys, I bought leds rgb "common anode". They work the same? Please tell me yes
1)Can be use gladiator in this project?
2)So many sections of 8x8 LEDs can be used thereby with an ATmega328 ?
sorry for the questions I'm from argentina and i don't understand well english and electronics
thanks end cheers!
1) Yes!
2) To be honest, I don't have an exact number but 32x16 RGB LEDs with one ATmega328 should be not far from the edge. I guess you might be able to double the size. But at the end you are limited by the 2 kByte RAM of the ATmega328 (32x16 needs 512 Bytes, only the data!).
Ok, but if used a Atmega 2560 (8kByte RAM) instead of Atmega328 (2 kByte RAM), something like could build your plasma modular wall (with more sections of 8x8 RGB LEDs)?? Say 4 times larger.
making this project 4 times bigger is not just a question of memory.
The more critical point is the timing for shifting out all data to the single driver boards. Since you can not just hook them up serially we had to go for a more sophisticated way using some creepy bit banging.
Thus we went for 8 data lines in total. You can get an idea of how it woks when looking to the schemes within the first picture gallery on this site:
http://www.solderlab.de/index.php/led-projects/modular-plasma-wall
However, if you plan to go bigger you have to consider that you have to do massive changes within the wiring and within the bit banging part of the micro controller's firmware.
Something says me that you may be should go for our universal driver boards:
http://www.solderlab.de/index.php/led-projects/matrix-controller-board
They are scaleable and kind of more handy!
Hope that helps!
Cheers!
Did you use arduino IDE code and program the atmega328 while it was in the arduino board, or program it with ICSP?
Thanks
p.s. your led dealer must love you guys!
yes we used the Arduino IDE for programming. Since we connected RX,TX, GND from the naked Arduino board to the controller board with the Atmega328 we even had not to transfer anything!
Cheers!
RSS feed for comments to this post