Lampduino is a computer-controlled free-standing floor lamp, comprised of an 8×8 RGB LED matrix. The lamp stands 45″ high and 18″ wide. Light emanates from both sides. It has various display modes, as well as an included editor for creating animations. The lamp is controlled via an application running on a PC host. The display modes include realtime drawing, playback of previously created animations, snow, meteor, plasma, and synchronization with music. With its endless available colors, Lampduino can also be used for color therapy, or as a mood light. When running standalone, without a computer, it plays a soothing plasma simulation..
NOTE: Any flickering in the videos below is caused by video camera aliasing. Persistence of vision makes it look flicker-free by the naked eye.
(64) 5mm common anode RGB LED’s. I bought mine on eBay
(1) ITead Studio Colorduino or an Arduino with Itead Studio Colors Shield
(1) large piece of foamcore board. This kind of board can be found in most office or artist supply shops. It is a foam core sandwiched between two sheets of thick paper. I recycled a 45×30″ piece that had a previous life as an advertising poster.
(2) 18×18″ pieces of matte drafting film. I cut them out of a single 24×36″ sheet of .003″ thick Grafix 2-sided matte drafting film.
lots of 30AWG kynar-insulated wrapping wire. I bought 3 50 feet rolls at Radio Shack, one each of red/white/blue. 150 feet is overkill, but it’s a lot easier to work with different colors of wire.
(2) 16-pin male headers
(1) 5V 1A power supply. I repurposed a wall wart from a broken gadget.
For music synchronization, a few additional parts are needed. See the Music Synchronization step.
hot glue gun
wire stripping/wrapping tool
Lay Out the Grid Pieces
Each of the 64 LED’s in the matrix is enclosed in a 2x2x2″ cell. First, draw out your cutting lines in pencil on your foam board. You will need 14 grid pieces to form the core of the matrix. I found that it’s convenient to lay out the cuts in pairs that are facing each other. This way, you can cut two slots at once.
Cutting foam board requires a very sharp knife. I used a #11 X-acto blade. If your knife is dull, instead of cleanly cutting through the foam, it will just catch on it, ripping out little chunks of foam. It’s not very pretty. I went through 3 blades while making the matrix. Change the blade when the cuts start to get degraded. I found it hard to make a single clean cut through the 3 layers of the foam board; this method often left me with little chunks of ripped out foam. It’s easier to make clean cuts if you first make a deep score with the knife against the straight edge. Make sure the score goes through the whole top layer of paper, and into the foam. Then you can remove the straight edge, and just run the knife repeatedly into the score until you get through the layers.
First, cut the slots. You can pop them out at this stage, or wait until the next step.
Cut out the Grid Pieces
Next, cut the grid pieces apart with your x-acto knife and straightedge.
Cut Slits in the Grid Pieces
Cut horizontal slits into the grid pieces, one in the center of each cell. Make sure the slits go through all the layers. You needn’t be super precise, but they should be about 1/2″ long. The LED’s will be held in place in a later step by pressing the wires into the slits.
Assemble the Grid Pieces
Assemble the 14 grid pieces to form the core of your matrix. Don’t glue it yet. You might have to take it apart several times while wiring it up. I painted over the printed bits with white spray paint before proceeding.
Wire up the 8 LED Strands
I chose wire wrap as the wiring method for this project because:
- it’s cheap
- there are no toxic fumes
- there is no risk of overheating and destroying LED’s
- it’s easy to undo, so repairs are easier
- it’s relatively quick to do
- it’s as reliable as soldering – perhaps more reliable, since there’s no risk of cold-soldered joints
- the wire is so thin that it can be threaded into the gaps between the foam matrix pieces
If you are not familiar with wire wrapping, Wikipedia has a detailed introduction to the technique. I was a bit worried that the 30AWG wire would be too thin to handle the current running through the matrix. I consulted some tables on the Internet, I found that 30AWG solid wire has a resistance of 105.2 Ω/1000 ft. I estimated an upper bound of 4 ft of wire, so that’s ~.4Ω – probably insignificant for this application. Next, I found that the current carrying ability (Ampacity) is estimated at .144A by most tables, but one actually had it listed at .86A. The LED’s I used run at a maximum of 20mA per color. In a column, a maximum of 1 LED at a time is lit, so it’s definitely in spec. On the other hand, if a whole row is driven w/ the with all 3 colors lit, we can end up with 8 x 3 x 20mA = 480mA. This is way over the .144A spec, but below the .86A spec. I decided to just try it, and if I encountered problems, I would put multiple wires in parallel for the rows. After testing, I found that using single wires for the rows worked fine … they did not heat up at all.
The schematic diagram for a common anode 8×8 RGB matrix is depicted above. We are going to wire our matrix, composed of 5mm LED’s, in the same fashion.
We need a total of 8 strands of 8 LED’s. Each pair of LED’s is connected with three 4″ pieces of wire. The anode is the lead which is slightly longer. In my photo above, the pins, from left to right, are Blue/Green/Anode/Red.
The red wires connect the red channel, the white wires the green channel, and the blue wires the blue channel. 4″ may sound a bit long, since the cells are only 2″ wide, but I when you account for stripping the wire on both ends, and leaving enough slack to manipulate the LED’s in while assembling the grid, 4″ is a good length. You will need 49 4″ pieces of wire for each color – 147 pieces total. While working on this step, I discovered a few things which make for a quicker and cleaner job:
- orient the pins of your LED’s the same way while wiring them (e.g. blue pin on the left, red pin on the right)
- connect the R/G/B wires between each pair of LED’s before moving to the next LED. At first, I was connecting all the reds, then all the blues, then all the greens. This method was a bit messier.
- spread the pins apart a bit before wrapping. Otherwise, the wrapping tool will get caught on the adjacent wraps as you try to insert it
- start the first wrap about halfway into each lead
- when connecting the second wire on each lead, just stack the wrap against the previous wrap.
Note that the anode pin is left unconnected at this stage. This is because the anodes form the rows, which are perpendicular to the R/G/B cathode wires, which form the columns.
When you are done with this stage, you will have 8 strands of 8 LED’s each.
Next, flip the matrix over so that the slots running perpendicular to the strands are on top. Wiring up the rows is a bit trickier, because we’re working in close quarters. However, unlike the columns, the rows need only 1 wire per LED, a total of 49 wires. Here’s where the slack we created by using 4″ long wires comes in handy. It lets us manipulate the LED’s more easily. Connect the anodes with 6″ lengths of wire. The yellow wires in my photo are the anode connections. I had an old spool of yellow wire, but it ran out before I was done with the rows. It’s easier to wire up all the anodes before you insert the LED’s into the slits, as pictured.
I ran all of my column wires through a single slot in the matrix ,to the bottom. I cut slots in the bottom for running the row wires. This was a mistake, because now my columns are horizontal, and the rows are vertical. The correct orientation is the reverse: the column wires should out the bottom, and the row wires down the side.
Connect the Matrix to the Colorduino
Wrap the 32 wires coming out of the matrix into the two 18-pin male headers. Note that you have to wrap on the short end of each pin, because we need to long end to plug into the Colorduino. The headers on the Colorduino are clearly labeled. The red and blue pins go on one header, while the anodes and the green go on the other. Note that the anodes are labeled VCC on the Colorduino, and that there are 4 anode pins on each side of the 8 green pins. The origin of our matrix, (0,0), is located at the bottom left. Therefore, pin 1 of red/green/blue should connect to the leftmost column. Similarly, pin 1 of the VCC (anode) pins should connect to the bottom row.
Before plugging the matrix into the Colorduino, it is a good idea to test it, and check for shorts, as well as correctness of the header wiring. I used a 5V power source, hooked up to a 100Ω resistor, to test each individual LED. I was pleasantly surprised to find that I didn’t have a single short circuit in the matrix.
Finish Constructing the Matrix
After the wiring and testing is done, you can attach the top, bottom, and sides. Note that there is an 3″ long extension of the side pieces on the bottom. This is to accomodate the Colorduino.
For more Detail: Lampduino – an 8×8 RGB Floor Lamp