Skip navigation

Tag Archives: rgb led

So yes, after the WS28xx revolution (that is dedicated LED controllers or even LEDs with integrated controllers), the problem of controlling a lot of (RGB) LEDs has almost vanished. but then you dig out this box with a LOT of RGB LEDs in it that are just waiting to be PWM controlled. you are not gonna throw them out, are you?
when i learned about Elco Jacobs’ amazing ShiftPWM Arduino Library, i knew all i needed was a little general purpose driver board to light all that LEDs up. the library basically uses shift registers and a high frequency serial signal in order to PWM control a lot of LEDs on just three Arduino pins. handy enough, i was introduced into etching PCBs at the same time, so there it was, my first etching project.
the LEDs i was dealing with were square modules containing three or four 5050 RGB LEDs (common anode). so besides generating the PWM signals, i also needed amplification, because those things run on 12V and consume around 200mA each. we had a bunch of ULN2803 available in the lab, which already served me well in other LED projects.
i designed a board that was easy to manufacture, single sided and chainable. it is called ALLtheLEDs because it can control all the LEDs we found.


we built several of those driver boards which are chained and hooked up to an Arduino. they only contain the 74HC595D shift registers, the ULN2803 darlington arrays and blocking capacitors. the data lines run separate from the power lines. each board provides 24 channels, enough for 8 RGB LEDs and up to 30V / 500mA per channel. one of these boards was used to control our rainbow kitchen:


now we also had bags of regular 5mm RGB LEDs in the lab, and on top of that we had a lot of SMD TLC5916 chips. those nifty devices are basically shift registers with an integrated current control for LEDs. this means you do not need resistors for each LED, you just hook up one single resistor to the chip to configure the current per channel. apart from that, they work just like regular shift registers. i designed another board for those chips and simply called it ALLtheOtherLEDs:


this board is also capable of driving 8 RGB LEDs, but at a maximum of only 120mA per channel. i use one of those boards to control several light sculptures, for example this one:


the Eagle files for ALLtheLEDs and ALLtheOtherLEDs are available in my repository:

)))project files(((

if you have any suggestions or questions, please comment!

While relaxing on a beach in spain back in 2006, an idea came into my mind. i wanted to build an LED display. fullcolor and large. no large resolution, just large in terms of dimension. in december 2006, i made actual plans for the project. from there on, i experimented, prototyped, programmed and soldered from time to time. having no deadline made it a real long time project. but then in 2009, i had my 10×10 pixel RGB LED matrix, a square meter of color and light.

matrix with its creator

i guess most of you are particularly interested in some facts about the hardware and software. first the hardware. i used 100 Superflux RGB LEDs with an angle of radiation of about 100°. the LEDs are dimmed via 8-bit PWM, generated by ATmega8 microcontrollers. each controller is responsible for 4 LEDs, which makes it a total of 25 controllers, running at 14,7456 MHz. there are 4 controllers on each PCB, the outputs are amplified by darlington arrays.

guts of the matrix

every LED has it’s own small board, including resistors for each color channel. the pixels are separated by a grid made of 4mm plywood. the light in each pixel is diffused by a small piece of air filter material and the frosted plexiglas pane. diffusion was a major problem, and i guess it’s not really possible to achieve perfect diffusion. my solution is a tradeoff between good diffusion and complexity.

pixels seperated by a grid

the data comes from a PC via RS232(USB adapter) at 460800 baud. all controllers read the RS232 line simultaneously and are addressed by a reserved byte in the data stream. so i broadcast the data to all controllers and each one picks the data it is supposed to read. i’ve reached frame rates beyond 100 FPS.

the final software was written in JAVA because of the OS independency. it is still in development and will probably always be. at the moment it is capable of playing back animations which are stored in bitmaps, displaying the game of life and some variations of it, simple particles and several colorful effects and filters. and of course multiplayer tetris with overlaying playfields. can drive up to three sane persons really nuts.
the matrix was always supposed to be some entertaining decoration element, so it has to be able to generate an endless variety of content without steady user inputs. so i let the software surf the internet and jump from link to link. on every website, it collects content. at the moment, its just an image of the whole website, but i plan to analyze for example the text on the website. the image of the website is analyzed to get it’s n main colors, which are then the basic colors of graphical effects. i hope to end up with some kind of AI which analyzes the web in-depth and shows a simulated creative behavior in dealing with forms, colors and movement. but that’s an utopia right now and it’s gonna be a long way.
another plan was to add some kind of interactivity, but the design is not optimized for adding sensors. maybe a webcam could be used as a proper input-device.
future plans for the hardware include the integration of a netbook to have a completely standalone device which connects to the internet via wifi or ethernet. i considered some embedded solutions, but as old netbooks get cheaper and cheaper, this would be a reasonable solution

if you want to have detailed information about the development and the building process of this project, please visit the project’s own blog (german)

%d bloggers like this: