Lampduino - an 8x8 RGB Floor Lamp

 by lincomatic
FeaturedContest Winner
8x8standingfilm.jpg
8x8testing.jpg
spaceinvaders.jpg
tetris.jpg
Lampduino is a computer-controlled free-standing floor lamp, comprised of an 8x8 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.



 
 
Remove these adsRemove these ads by Signing Up

Step 1: Bill of Materials

Parts List

(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 45x30" piece that had a previous life as an advertising poster.
(2) 18x18" pieces of matte drafting film.  I cut them out of a single 24x36" 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.


Tools

x-acto knife
hot glue gun
wire stripping/wrapping tool
straight edge
ruler
1-40 of 203Next »
jonspring says: Jun 1, 2013. 11:39 PM
When I used an FTDI cable, I got an "stk500_recv(): programmer is not responding" error message in the Arduino IDE until I also connected the DTR pin on the FDTI cable to the DTR pin on the colorduino. That syncs the reset and allowed the upload to work.
lincomatic (author) in reply to jonspringJun 2, 2013. 4:36 PM
I've never seen one with a DTR pin. Only RTS/CTS.
rubeke4747 says: May 25, 2013. 4:37 PM
I just love this project and I really want to make one as a coffee table like in the picure I found on google. But there is one problem i would like to solve. In you instructions you said that if its not connected to the computer it can only display the plasma program because the memory is to small to hold other sketches. Now is my question if there is any way to increase the memory ? A external memory I can connect to it or something like that ? I've been searching on google without succes. It would be a shame if I had to connect my coffee table to my pc just to put something else on there then the plasma or to make it react to music. Thanks
tisch01.jpg
rubeke4747 in reply to rubeke4747May 25, 2013. 4:44 PM
Would the microSD breakout board be an option ? How would I connect this and program it to make it work ?
lincomatic (author) in reply to rubeke4747May 29, 2013. 10:15 PM
Yes, you need to store the animations in files on the SD card, instead of feeding them via the serial link
rubeke4747 in reply to lincomaticMay 30, 2013. 4:06 AM
oke thansk I'll give that a try
tel0ss says: Apr 23, 2013. 10:07 PM
I am working a similar project for school, I have used digital logic lots, however, i am not so familiar with the amp chip. using only the #1 input set, what is recommended to be done with the #2 set of pins? Normally i would tie them high or low for logic inputs, however reading some places i have heard different things about the handling of op-amps

thanks!
selp says: Feb 28, 2013. 10:07 AM
It WORKS !

But is there a way to use music mode in standalone mode (without a computer) ?

Is it possible ?
radeonorama says: Oct 22, 2012. 4:52 PM
"Crashes around 80 frames in when playing back from rgbmtx"

Hey lincomatic

I finally managed to get this going yesterday after revisiting your project and reading the comments about changing the #define SERIAL_BUFFER_SIZE to 128 if using V1.x of Arduino. That didnt work, however, compiling in arduino-0023 did so that made me smile! Now my table can do more things than the plasma mode! :-)

I still have a bit of a problem though and hope you might be able to help.

I have everything connected and seemingly working well except for a crashing when playing back the frames from RGBmtx.

For example, when playing back the music.bmp the board and the RGBmtx freeze at frame 81. others i have created also freeze around 80, in my case it was 83. Is there something i am doing wrong or perhaps something you can help me try to get it past that mark?

I would guess at some sort of memory limit/leak but have no idea where to start?! All the best,

Rad
lincomatic (author) in reply to radeonoramaOct 22, 2012. 5:22 PM
Glad you got it working. I just looked at the code, and I can't find any reason why it should crash like that. Sorry :(
lincomatic (author) in reply to lincomaticOct 22, 2012. 5:23 PM
Mine can run music.bmp forever
radeonorama in reply to lincomaticOct 22, 2012. 6:07 PM
oh bugga. :-( what version of arduino are you running then? and is there any sort of debugging i can to do help me work out why it crashes?

Also, do you know of a limit there might be on the amount of frames?
lincomatic (author) in reply to radeonoramaOct 22, 2012. 7:28 PM
I use Arduino 0022, and Processing 1.5.1. I'm assuming you're saying that RGBmtx, the Processing sketch is crashing. Have you tried loading the PDE file into Processing and running it, or are you using my precompiled versions? Maybe Processing will show you the error?
radeonorama in reply to lincomaticOct 23, 2012. 3:34 AM
Hey, Good thinking! I just ran the PDE in Processing and yes, it does return an error. Not sure why i didnt think of that but hey ho!

As for the Error, im getting:

"An OutOfMemoryError means that your code is either using up too much memory
because of a bug (e.g. creating an array that's too large, or unintentionally
loading thousands of images), or that your sketch may need more memory to run.
If your sketch uses a lot of memory (for instance if it loads a lot of data files)
you can increase the memory available to your sketch using the Preferences window.
Exception in thread "Animation Thread" java.lang.OutOfMemoryError: Java heap space
at processing.core.PGraphics2D.allocate(Unknown Source)
at processing.core.PGraphics.setSize(Unknown Source)
at processing.core.PApplet.makeGraphics(Unknown Source)
at processing.core.PApplet.createGraphics(Unknown Source)
at RGBmtx$Frame.draw_canvas(RGBmtx.java:1254)
at RGBmtx$Frame.draw_full(RGBmtx.java:1244)
at RGBmtx$Matrix.current_frame_image(RGBmtx.java:1634)
at RGBmtx$Matrix.current_frame_image(RGBmtx.java:1630)
at RGBmtx.draw(RGBmtx.java:205)
at processing.core.PApplet.handleDraw(Unknown Source)
at processing.core.PApplet.run(Unknown Source)
at java.lang.Thread.run(Thread.java:662)"

With that, I increased the "Maximum Available Memory" in preferences of Processing to 512mb and its resolved it.

Do you have yours set higher than the default too? Im guessing i will run into this issue again if the image sequence in RGBmtxis made longer?
lincomatic (author) in reply to radeonoramaOct 23, 2012. 7:52 AM
I didnt' change the settings in mine. I guess you are using longer sequences than me. I didn't write the code from scratch. It's hacked from mtxcontrol. I don't really know Java. If you figure out where the memory leak is, please report back.
spiker546 says: Aug 1, 2012. 5:21 PM
where did you connect the anode wires?
misael123 says: Jul 27, 2012. 2:26 AM
Hi your project is awesome!!!...i try use my colorduino too...but i have a problem i need your help...i connect my arduino board to colorduino with SERIAL connection RX-RX-TX-TX...but the Rgbmatrix not work...Please help me !!!
you will see this in this images
12 - 1.jpg12 - 12.jpg
kd7eir in reply to misael123Jul 31, 2012. 7:49 AM
Make sure that your connections are like this:

Arduino RX -> Colorduino RX
Arduino TX -> Colorduino TX
Arduino Reset -> Colorduino DTR
Arduino 5V -> Colorduino VDD
Arduino GND -> Colorduino GND

Also, make sure that you have done the following:

The serial buffer has been decreased to 64 bytes, which is too small for RGBmtx to properly communicate with my ColorduinoSlave sketch. RGBmtx will just freeze up your Colorduino, and not work correctly.
To fix it, you must exit the Arduino 1.x IDE and edit modify hardware\arduino\cores\arduino\HardwareSerial.cpp.
Look for the line
#define SERIAL_BUFFER_SIZE 64


and change it to
#define SERIAL_BUFFER_SIZE 128

Then restart Arduino 1.x and re-upload the ColorduinoSlave.pde sketch to your Colorduino.
kd7eir says: Jul 12, 2012. 10:04 AM
I can load the colorduino slave sketch to the colorduino, but rgbmtx says that there is no device found.

Any suggestions?
kd7eir in reply to kd7eirJul 12, 2012. 10:40 AM
I discovered the source of my communications error! When RGBmtx is launched it was resetting the serial port connection to the Colorduino, causing it to not see the Colorduino.

Instead of plugging my programmer directly into the Colorduino, I used female to female cables and connected GND, VCC, RXD, and TXD. I did NOT connect DTR. By not connecting DTR, I prevented the serial port reset from affecting the Colorduino, and RGBmtx was able to see it!
gsilva says: Mar 22, 2011. 1:05 PM
Can i use more than one Itead Studio Colors Shield with one arduino??? How many?
lincomatic (author) in reply to gsilvaMar 22, 2011. 2:30 PM
No, it uses too many i/o pins. if you want multiple ones, you have to use Colorduino's .. you can control several Colorduinos via I2C. Nick has hacked a version of my Colorduino Library to do that: http://123led.wordpress.com/colorduino/
I haven't had a chance to integrate it into my latest version yet.
AtkoBaka in reply to lincomaticJul 11, 2012. 7:31 PM
I think you can also modify the colorshield and add the I2C pins (A4, A5 5V and GND on the ATmega168/328) since the colorshield doesn't use A4/A5 for anything. I will give it a try later when I have time.
lincomatic (author) says: Jul 11, 2012. 12:02 PM
For those people who were having problem with RGBmtx not communicating properly with ColorduinoSlave, it is probably because you're using Arduino 1.0+.
I have updated step 18. http://www.instructables.com/id/Lampduino-an-8x8-RGB-Floor-Lamp/#step18
See the section "WARNING FOR THOSE USING ARDUINO 1.X"
Thanks to AtkoBaka for discovering the fix.

Also, I have updated the Instructable with pinouts for connecting to an FTDI cable.
ron.v says: Jun 26, 2012. 10:00 AM
hi, i have a couple of questions before i'm trying this.

1) Can i switch modes with buttons or a controller instead of a laptop? (can i switch between cool animations and just collour fading or 1 hard collour?)

2) Is the part list still up to date? since i'm a noob in electronic's i'm not quite shure what i'm buing XD

3) The leds ur using, what cmd are they?

4) this thing is so awsome :D
kd7eir says: Jun 11, 2012. 10:06 PM
Hello,

I am having the same issue with getting Processing and RGBmtx to communicate with my colorduino. I have the colorduino connected to the computer with the Foca FT232RL that itead sells for the colorduino.

I changed the ping command as you recommended, and I got a white fill when I opened RGBmtx. Other than the plasma mode, I can not get anything else to happen with RGBmtx.
lincomatic (author) in reply to kd7eirJun 12, 2012. 10:32 AM
What do you mean you get a while fill? The screen just lights up all white?
kd7eir in reply to lincomaticJun 12, 2012. 11:41 AM
In a previous post from May 2011, you said this:

"To see if the Colorduino is receiving the ping() command properly, replace the ping code readProcessPacket() in ColorduinoSlave.pde with this:


case OPC_PING:
curMode = CMODE_COLOR_FILL;
ColorFill(255,255,255);
// NOP
break;

Then if it's receiving ping() properly, you should see the whole matrix light up white. Then we'll know that the problem is in sending the response back to the host."

That is what I am referring to.
kd7eir says: Jun 11, 2012. 10:08 PM
Forgot to mention in my comment - the stand alone RGBmtx never sees the colorduino.
aridee87992 says: May 9, 2012. 10:04 AM
Hi Lincomatic!

I'm nearly finished with this project, but I was wondering if you put current limiting resistors anywhere in this circuit?

Thanks!
lincomatic (author) in reply to aridee87992May 10, 2012. 7:35 PM
You don't need current limiting resistors. The current is adjusted via software
newdos says: Feb 13, 2012. 11:24 AM
HI Lincomatic - still having trouble here - got myself a colorduino shield plugged on top of my uno. Uploaded the colorduino slave software and now it at least plays the color morphing. When I start RGBmtx it recgonises the UNO but it doesnt take control of it ie if I change modes everything except the plasma mode just freezes the display when I click it and change it - going back to the plasms mode starts it running again. For example when in snow mode I can see the TX and Rx leds on the uno flashing but the color shield is not responding it just sits there with a frozen plasma display. Any ideas, or do I now need to go an buy a full blown colorduino!!!!

Cheers Kev
lincomatic (author) in reply to newdosFeb 15, 2012. 4:40 PM
Hmm.. unfortunately, I don't have an Uno, so I don't know what is wrong.
There was another user who hit the reset switch before launching Processing to fix his problem, but in his case, RGBmtx seemed not to detect his board, which is not your case.

Try downloading downloading and installing Processing. Then download and unzip RGBmtxsrcV1.1..zip into your processing sketch folder. Start Processing and load RGBmtx.pde into it (see my instructions in my response to roncobra if you run into problems). Once you get it running, exit Processing, download ColorduinoDeviceDbg.zip and replace the existing ColorduinoDevice.pde with the version in the ColorduinoDeviceDbg.zip.

Restart Processing and load in RGBmtx.pde. Now, you should see messages in the bottom pane of the Processing UI such as cE=0, etc. Let me know what you see, and maybe I can figure out what's wrong.
globo in reply to lincomaticMar 22, 2012. 4:33 AM
Hi lincomatic,

I have a similar setup as kevin (MacBook Pro OS X 10.7.3 - Uno connected to the Colorduino). I had quite a few problems getting RGBmtx to start. RXTX Library mismatch between arduino and Processing. I also had to lower the baud rate to 19200 and enable the delay(100) in openPort ().
Now RGBmtx starts up fine, finds my serial port but doesn't do anything.

Scanning ports for Colorduino
Stable Library
=========================================
Native lib Version = RXTX-2.1-7
Java lib Version = RXTX-2.1-7
cE=-16pingrc=-16Found a Colorduino on: /dev/tty.usbmodemfa131
cE=13cE=13

cE=13 probably means that the communication is not working. Any ideas how to get it to work?

Yours Jan
lincomatic (author) in reply to globoMar 22, 2012. 7:51 AM
@Jan,

I don't understand what you mean ty RXTX library mismatch between arduino and Processing. There is no shared code between Arduino and Processing.
globo in reply to lincomaticMar 22, 2012. 12:51 PM
I was refering to
"WARNING: RXTX Version mismatch
Jar version = RXTX-2.2pre1
native lib Version = RXTX-2.2pre2"

Processing has one, Arduino the other it seems. After copying the one from aruino to Processing it worked again.
lincomatic (author) in reply to globoMar 22, 2012. 5:34 PM
OK. Please try adding the the wf= print statements I asked newdos to put in below and report back.
globo in reply to lincomaticMar 23, 2012. 12:52 AM
Scanning ports for Colorduino
Stable Library
=========================================
Native lib Version = RXTX-2.1-7
Java lib Version = RXTX-2.1-7
cE=-2pingrc=-2Found a Colorduino on: /dev/tty.usbmodemfa131
cE=13wf=2cE=13
lincomatic (author) in reply to globoMar 23, 2012. 1:19 PM
OK, this is just too strange. So RGBmtx is sending PlayFrame packets, and the UNO is seeing SetMode packets. I really have no idea what is going on. There must be something weird about the UNO making it corrupt my packets.

I'm starting to think the only way to figure out what's going on is for someone to send me an UNO to debug with.
globo in reply to lincomaticMar 24, 2012. 1:39 AM
I have removed the ATMEGA Chip from my UNO board, so it ist basically a dumb bridge to programm the Colorduino. The code is being interpreted on the Colorduino.
1-40 of 203Next »
Pro

Get More Out of Instructables

Already have an Account?

close

PDF Downloads
As a Pro member, you will gain access to download any Instructable in the PDF format. You also have the ability to customize your PDF download.

Upgrade to Pro today!