Skip navigation

Tag Archives: led

Just a quick one on a thing i discovered today. I ordered USB-compatible, RED, waterproof LED strip from an eBay seller. as expected, i received 50cm strip with a USB cord, but taking a closer look, i found out that it’s actually a flex-PCB for RGB LED strips.


and in fact, the package of the LEDs is a classic 6-pin 5050. weird: the resistors are all the same. and here’s why:


it looks as if they just used their regular RGB LED manufacturing process but instead of bonding and R, G and B chip into the package, they bonded just three R chips. a colleague pointed out that these LEDs might be the result of a failure in the manufacturing process, but i also ordered those strips in warm white, and guess what: 6-pin 5050 package, RGB-strip flex-PCB and three white chips inside the LEDs.

are single-color LEDs still a thing? probably not…

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!

On the everlasting quest for entertaining content for my RGB LED matrix, i stumbled upon twitter. an endless stream of information that “just” needs to be parsed and turned into light. starting off with something simple, i decided to extract people’s favorite colors. i found a nice article on using the twitter search API in python and used it as a base for my script.


here’s what it does: first, it searches for the string “my favorite color” and in practice finds around .1-5 tweets a minute like (totally random samples shown)

my initial plan was to use the wikipedia list of colors as a lookup table, when i realized that people are commonly not very creative when choosing their fav color: it’s mostly one of about 10 different colors. so i compiled my own small lookup table from my experiences of staring at tweets:

colorlist = ["grey","lime","white","violet","yellow"...

the script simply cleans up the tweet, removes any strange character like “#” and compares every word of the tweet with my lookup table. the first color string in the tweet wins.
after that, the string is converted into predefined RGB values and weighted with the tweet length to generate some more diversity. the longer the tweet, the brighter the color.
that’s basically it. now every time somebody twitters his/her favorite color, a pixel is slowly fading in to the LED matrix, forming a color spiral in the end.

the result is a very relaxing effect that somehow connects my room to the internets out there in a very abstract way. there are color trends that change over the day and the stream of retweets forms longer traces in the same color. you get an idea of what’s going on in the “favorite color” corner of the twitterverse without obtaining too much information. obviously you could generate a similar effect by choosing random colors and times. but if you look at the display and you know that if a pixel lights up, somebody in some place in the world initiated this by tweeting his/her favorite color and is totally unaware of this project, it feels awesome.

so go ahead and check out the project files to use twitter as a data input for your next project:

))) project files (((



In the beginning of 2011, i was asked to create some light effect for electronic music partys. it had to be robust and simple, the budget was just 200 Euros. my first thought was obviously an LED matrix. but as i experienced in my former matrix projects, these things can be expensive. after a short brainstorming, we came up with the following concept: we decided to build single panels that contain five RGB LEDs in a row. these panels can be mounted on the ceiling and are either distributed in the room or combined to form a matrix. the design was kept very simple and therefore cheap, which allowed us to build a few panels with the budget and extend the project if more money is available.

time was short, so we went for five panels to end up with a 5*5 matrix at the first party. we bought slats, stapled them together and ended up with ladder-like constructs that were 3.3 m long and 0.4 m wide. some fabric was used as a diffusor. an ATmega168 and some transistors on a breadboard control the five LEDs and the thing looked like this:


as you can see, the angle of radiation of the LEDs seperates the singe ‘cells’, making it possible to display clear ‘pixel’ images later on. since a breadboard is not the most robust solution for electronics and manufacturing PCBs would have been to time-consuming/expensive, i used perfboard and throughhole components. i routed the board in Cadsoft Eagle and used a CNC mill with a pen as a plotter to draw the traces onto the boards before soldering. this made it easy to reproduce them and place the mounting holes. no more messing around with mirrored Eagle printouts and forgotten traces. optimized like that, soldering went pretty fast, about an hour for a complete board.

plotted pcbs

so what’s on that board? as the brain, i still use the ATmega168. ULN2001A darlington arrays drive the LEDs and a 1489N RS232 receiver changes the +-12V signal to 0-5V. the voltage regulation is handled by a 7805, dirty but inexpensive. the complete board costs around 10 Euros. as connectors for the power supply, i chose 4 way MOLEX power connectors because they are cheap, robust and reverse polarity protected. for the data line, standard SUB-D9 connectors are used. the boards are designed to be daisychained, so power/data in on one side and power/data out on the other side.

ajolicht pcbs

power is supplied by an old ATX PSU. i use the 12V line and regulate down to 5V on the single boards. this is done to overcome voltage drops when using a long power line and many boards.
the data stream that controls the panels is generated by an old laptop running some python scriptage on a linux system.

AjoLicht matrix half hanging

all panels share the same RS232 line. this is possible because they only receive. each panel has it’s own address and can thereby be controlled individually, so it does not matter if you want to control one or fifty panels. the firmware on the panels handles the datastream, generates the PWMs via binary coded modulation and performs a gamma correction.

the protocol for data transmission is rather simple:
'A',address,15 bytes of data (5xRGB)
represents a data package for one panel, 17 bytes in total.
here’s a video of the finished five-panel, 3*3 m matrix:


the panels so far survived 3 partys, rough handling and beeing stored under bad conditions.
so yes, this is the billionth LED matrix, but this time, it’s large scale and really cheap, easy to build and makes a cool illumination for partys. and it always surprises me how you can still amaze people with a bunch of blinking LEDs.

specs in short:
* panel is 3.30m x 0.4m
* costs for each panel: 25 Euros
* 5x superflux RGB LED per panel
* RS232-bus
* 24 bit color depth
* ~80 FPS @ 5 panels in a matrix

feel free to download the source files including firmware sources, example python script and eagle files.

))) project files (((

if you have any questions, please do comment.

%d bloggers like this: