Lampduino - an 8x8 RGB Floor Lamp by lincomatic
Contest WinnerFeatured
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
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) says: Oct 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) says: Oct 22, 2012. 5:23 PM
Mine can run music.bmp forever
radeonorama says: Oct 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) says: Oct 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 says: Oct 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) says: Oct 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 says: Jul 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 says: Jul 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) says: Mar 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 says: Jul 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) says: Jun 12, 2012. 10:32 AM
What do you mean you get a while fill? The screen just lights up all white?
kd7eir says: Jun 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) says: May 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) says: Feb 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 says: Mar 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) says: Mar 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 says: Mar 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) says: Mar 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 says: Mar 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) says: Mar 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 says: Mar 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.
lincomatic (author) says: Mar 24, 2012. 7:48 AM
Yes, there seems to be something going on when the 8U2 chip translates the USB to serial to transmit to Colorduino. Do you have an FTDI cable? I would like to know if you have the same problem using FTDI for the USB->Serial conversion.
globo says: Mar 24, 2012. 11:02 AM
No I don't have one. I'll see if I can get one. That might take a while though...
lincomatic (author) says: Mar 24, 2012. 11:11 AM
How about a Duemilanove? That has FTDI on it. That's the setup I used.. Duemilanove w/ the 328P removed.
newdos says: Feb 16, 2012. 11:23 AM
Hi LInco - ignore my last post - I as well didnt realise processing was a separate program to arduino IDE - however still get the same result as before but for info had to drop the baud rate to 9600 to get RGBmtx to see the colorduino and then I got the debug code show below from the window


Scanning ports for Colorduino
WARNING: RXTX Version mismatch
Jar version = RXTX-2.2pre1
native lib Version = RXTX-2.2pre2
cE=0pingrc=0Found a Colorduino on: COM1
cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0cE=0Start Writing Matrix - Done

got the matrix write bit from trying to save a frame to the colorduino - display still just freezes the plasma mode on it when I try anythigng but plasma mode. I notcied the code in the debug window just says cE=0 on everything mode I try and fyi I still can see the rx an tx lights flashing on the uno in snow mode etc

Look fwd to your reply

Cheers Kev
lincomatic (author) says: Feb 16, 2012. 8:02 PM
Hmm.. the good news is cE=0 means there is no data corruption when communicating with the Arduino, and that the Colorduino is receiving all the commands and data. The bad news is I have no idea why it's not working.

So in record mode, the matrix doesn't update in realtime when you edit the matrix? Snow and Meteor do nothing? And it never returns cE=anything other than 0?

If so, I don't get why the matrix isn't updating except in plasma.
newdos says: Feb 17, 2012. 1:08 AM
correct matey!!! in record mode the plasma has just froze and nothing changes on the display at all until you toggle back to plasma mode. Do you think it is becuase it is a colorshield rather than a colorduino ??? I was wondering about the comms because of the number of pins connected on the shield to the uno.
Just wondering if I now go for a colorduino are you confident it will work with that and its not down to the Uno ???

Cheers again Kev
lincomatic (author) says: Feb 20, 2012. 12:11 PM
Kev,
Sorry for the delay in replying.. I've been quite busy. I am really stumped as to what's going on.. the fact that the plasma works indicates the that colors shield is functioning properly. The cE=0 indicates that the communication is working properly ... so what's wrong? I would expect that if the Uno were the culprit, that the communications would have errors. And if the colors shield were the culprit, the plasma would fail. When you put it in snow or meteor mode, do you get a continuous stream of cE=0 messages?
newdos says: Feb 21, 2012. 2:03 AM
Thanks Lincomatic - just glad you got back. I have done what you suggested and any mode except record and plasma gives a constant string of cE = 0 - hope that helps get to the bottom of this conundrum.

Cheers Kev
lincomatic (author) says: Feb 21, 2012. 7:22 AM
OK, debugging remotely is a slow an laborious procedure, so bear with me... I'm going to give you some code for testing, so I can try to figure out what's going on. Edit ColorduinoSlave.pde and look for the following lines:

case OPC_PLAY_FRAME: // incoming frame
// curMode = CMODE_PLAY_FRAME;
if (curMode == CMODE_PLAY_FRAME) {
if (packetBuf[1] == PACKED_FRAME_LEN) {
unpackFrame(packetBuf + 2);
curError = 0;

change the last 2 lines so they look like this:

case OPC_PLAY_FRAME: // incoming frame
// curMode = CMODE_PLAY_FRAME;
if (curMode == CMODE_PLAY_FRAME) {
if (packetBuf[1] == PACKED_FRAME_LEN) {
unpackFrame(packetBuf + 2,1);
curError = 0xbd;

upload the updated sketch to your Arduino and restart RGBmtx.

now, you should see cE=-67 coming out randomly when moving the cursor in RGBmtx. When you are in snow mode, there should be a continous strea of cE=-67. Let me know the result.. I'm trying to see if the frames are getting received properly.
newdos says: Mar 3, 2012. 9:02 AM
Hi Linco,
Sorry for my delay in replying this time my turn to have been ttied up at work!! anyway changed the code as you said and I still get cE=0 when moving the cursor and a constant string of cE-0 in snowmode - over to you!!

Cheers Kev
lincomatic (author) says: Mar 3, 2012. 3:45 PM
Wow that is really strange. So the board is decoding the packets properly, but processing them wrong. OK, I will work on some more debugging code and let you know when it's available.
lincomatic (author) says: Mar 8, 2012. 9:05 AM
OK, try this.. again, this is just debugging code to see what's going on...
replace readProcessPacket() in ColorduinoSlave.pde with the one below, upload it to your Colorduino, and run the debug Processing sketch, and let me know what cE=xx numbers you get when you try to run snow mode.

// check for a packet from the host and process it
void readProcessPacket()
{
//
// fetch a data packet from host
//
int bytesRead = readPacket(packetBuf);

if (bytesRead) {
//Serial.write(bytesRead);
if (bytesRead > 0) { // process packet
switch(packetBuf[0]) {
case OPC_PING:
// NOP
curError = 10;
break;
case OPC_PLAY_FRAME: // incoming frame
// curMode = CMODE_PLAY_FRAME;
if (curMode == CMODE_PLAY_FRAME) {
if (packetBuf[1] == PACKED_FRAME_LEN) {
unpackFrame(packetBuf + 2,1);
curError = 11;
}
else {
curError = 1; // bad data length
}
}
break;

case OPC_QUEUE_FRAME: // incoming frame
if (packetBuf[1] == PACKED_FRAME_LEN) {
if (!packedFrameQueue.addFrame(packetBuf + 2)) {
//success
curError = 12;
}
else {
curError = 1; // bad frame
}
if ((curMode == CMODE_MUSIC_SYNC) && packedFrameQueue.isFull()) {
return;
}
}
else {
curError = 1; // bad data length
}
break;

case OPC_SET_MODE:
if (!setMode(packetBuf[2])) {
curError = 13;
}
else {
curError = 1; // unknown mode
}
break;
case OPC_FILL:
if (curMode == CMODE_FILL) {
ColorFill(packetBuf[2],packetBuf[3],packetBuf[4]);
curError = 14;
}
break;
default:
// unknown opcode
; // fall though
}
}
Serial.write(curError); // send current error code to host
}

}
newdos says: Mar 20, 2012. 9:36 AM
Hi Linco,
Sorry for delay man been snowed under at work again!!!
anywayI now get cE=13 all time in any mode, and as before display freezes unless in plasma mode.

Look forward to your reply

Kev
lincomatic (author) says: Mar 22, 2012. 5:33 PM
That's very strange. It means it's only getting set mode commands, not play frame commands. OK, edit ColorduinoDevice.pde in Processing and search for

pkt[idx++] = (current_mode == mode_music) ? OPC_QUEUE_FRAME : OPC_PLAY_FRAME; // frame opcode

add the following line after it:

print("wf=");print(pkd[idx-1]);

and let me know what you see in the Processing console.
newdos says: Mar 24, 2012. 4:49 AM
Hi LInco,
This is what I get in snow mode - just a cut and paste from processing and it just keep repeating

cE=13wf=2cE=13wf=2cE=13wf=2cE=13wf=2cE=13wf=2cE=13wf=2cE=13wf=2cE=13wf=2cE=13wf=2cE=13wf=2cE=13wf=2cE=13wf=2cE=13wf=2cE=13wf=2cE=13

Cheers Kev
lincomatic (author) says: Mar 24, 2012. 7:46 AM
OK, that's bad news :(
globo is getting the same thing.
I don't understand. I send a play frame command and it receives a set mode command. Must be something strange with the UNO corrupting the data.
I'm not sure I can figure this out unless someone sends me an UNO to debug.
I'll think about it some more this weekend and see if I can think of some other tests to do.
newdos says: Apr 12, 2012. 12:07 PM
Hi LInco - any news on this yet ?

Kev
lincomatic (author) says: Apr 12, 2012. 5:36 PM
Hi Kev, sorry, since I don't have an UNO I can't figure out how to fix it, even though I know what's wrong. The UNO is somehow running the code improperly.globo has verified the same problem with his UNO
newdos says: Apr 13, 2012. 3:20 AM
OK so as a quick fix what board do I need to buy with which chip etc to get this working ???

Cheers Kev
lincomatic (author) says: Apr 13, 2012. 7:13 AM
Try a Duemilanove. I think it should work.
newdos says: May 1, 2012. 12:44 PM
Hey Linco!!! got my duemilanove and guess what ? it still doesnt work!!!!! all it does now is run the plasma and rgnmtx does nothin doesnt even freeze the display like before. I still have the debug code running you gave me and I can see it is finding the colorduino okay but thats it over to you mate!!!!

Cheers Kev
lincomatic (author) says: May 10, 2012. 7:38 PM
Is the console output from the debug code the same as before? This is very strange
newdos says: May 11, 2012. 12:21 AM
Sure is Linco using the code exactly as we left it when we finished using the Uno
Do you want shot of the messages it brings up ?
lincomatic (author) says: May 11, 2012. 8:18 AM
Yes, please.
AtkoBaka says: Jul 7, 2012. 9:41 PM
I am having the same issue with RGBmtx just freezing the Plasma display, but I think I know the issue. If you compile the code with Arduino 0023 or earlier RGBmtx works fine, if you compile with Arduino 1.0 or later (with the updated colorduino libraries) RGBmtx will freeze the plasma display and not work properly.

I believe they changes the software serial interface in 1.0, in particular I noticed that the packet buffer has been reduced to 64 from 128, but since it works with 0023 I haven't debugged it any further, it was far simpler to keep an older compiler around ;)
lincomatic (author) says: Jul 7, 2012. 10:51 PM
Wow, that's a great find. Maybe it will fix the problem for all of the other people.
AtkoBaka says: Jul 9, 2012. 5:28 PM
If you wish to used Arduino 1.0 or later, you have to exit the IDE and modify hardware\arduino\cores\arduino\HardwareSerial.cpp. Change the line for the serial buffer size definition from "#define SERIAL_BUFFER_SIZE 64" to "#define SERIAL_BUFFER_SIZE 128". Then RGBMtx will work per the previous versions of the Arduino compiler instead of freezing the plasma. The biggest caveat is that the binaries that Ardu8ino make are roughly 1k larger (why??!?!?).
lincomatic (author) says: Jul 11, 2012. 11:42 AM
Thanks for your help. Why is it 1K larger? Code bloat!

My Colorduino uses a AtMEGA 168, and I can't even get it to run with SERIAL_BUFFER_SIZE = 128. I think I'm running out of memory!
I'm sticking with Arduino 0022
AtkoBaka says: Jul 11, 2012. 1:30 PM
Also, did you know that your sample music.bmp frameset, is exactly 32k large :)

I thought it would be easy to fit the entire frameset in to the ArduinoMEGA 1280's 128K of flash using a large array in PROGMEM. I was wrong. Apparently there is a 32k limit of some sort on array sizes (includes structure overhead, so you have < 32k maximum in each array). I wrote some code that allows you to split up the data into several arrays and access them programatically using an iliffe vector (array holds pointers to memory locations of the other arrays). Let me know if you are interested in the code and I can put it somewhere.

Anyways all 172 frames, array code and Colorduino code compiles to 35240 bytes, so it's still too large for the ATMega328 :( I guess the maximum number of frames that can be stored on the ATMega328 is probably around 150 or so?

Converting the BMP to a raw data structure needed some thinking and perl script magic because of the way the file is actually laid out (would be easier if the file was just one long image with frames starting at every 8th pixel column :) but the frames are laid out X then Y.

Converting to raw bits is easy with NetPBM "bmptopnm < music.bmp | pnmtoplainpnm > music.pnm" (see: http://netpbm.sourceforge.net/doc/ppm.html). But, making that into a set of arrays took some thought: read in the file, lay out the file in memory then read out each frame, and then output the frames into a set of arrays. The up side is that I can now convert any BMP or image into an array that can be used in the firmware. My perl script is horrible, it puts one image per array (size 192) but if you want to save the most flash, you can combine the arrays and hold music.bmp in to two equally sized arrays of 16512 in size. Let me know if you are interested in the horrible perl script.

Cheers!
lincomatic (author) says: Jul 13, 2012. 10:17 AM
Great work! If you'd like to share your sketch and perl script, I'll add it to the Instructable. In RGBmtx/ColorduinoSlave, I pack the frames down to 12-bits per pixel (96 bytes) to cut down on communication time and save space.
AtkoBaka says: Jul 11, 2012. 1:03 PM
Awesome!, Thanks for your great library!
globo says: Mar 23, 2012. 12:53 AM
it should be:

print("wf=");print(pkt[idx-1]);

right?
newdos says: May 12, 2012. 10:18 AM
Hi Linco - this comes up when start RGBMtx




Scanning ports for Colorduino
WARNING: RXTX Version mismatch
Jar version = RXTX-2.2pre1
native lib Version = RXTX-2.2pre2
pingrc=-1No Colorduino on: COM3
cE=-2pingrc=-2Found a Colorduino on: COM5

And after this nothing else appears as I change modes etc. Incidentally if I close MTX and restart it, it wont find the colorduino until I unplug it and reconnect

Cheers Kev

newdos says: Jun 2, 2012. 1:42 PM
Any ideas on this yet Linco ?
lincomatic (author) says: Jun 7, 2012. 10:30 PM
Sorry, I really don't have a clue what's going on, and I can't really go any further, since I don't have the hardware to test. If you want to send me your boards postpaid both ways, I can try to get it working and then send them back to you.
newdos says: Jun 8, 2012. 9:28 AM
Where do I find you mate so I can consider postage ?
Do you want to email me rather than put it on here?

newdos@btinternet.com

newdos says: Feb 16, 2012. 5:49 AM
Hi Lincomatic, I have tried what you suggested but I cant get it to run in processing get a load of errors below and I think I have installed the colorpicker library correctly - can you help please ? determined to get this working!!!!

button:326: error: stray '#' in program
Frame:219: error: stray '#' in program
FrameChooser:6: error: stray '#' in program
FrameChooser:6: error: stray '#' in program
GuiElement:55: error: stray '#' in program
GuiElement:55: error: stray '#' in program
GuiElement:60: error: stray '#' in program
RGBmtx:10: error: expected unqualified-id before 'public'
RGBmtx:15: error: 'PFont' does not name a type
RGBmtx:16: error: 'PFont' does not name a type
RGBmtx:18: error: 'Matrix' does not name a type
RGBmtx:19: error: 'Device' does not name a type
RGBmtx:56: error: expected constructor, destructor, or type conversion before 'buttons'
RGBmtx.cpp: In function 'void setup()':
RGBmtx:63: error: 'frame' was not declared in this scope
RGBmtx:63: error: 'getToolkit' was not declared in this scope
RGBmtx:66: error: 'matrix' was not declared in this scope
RGBmtx:66: error: expected type-specifier before 'Matrix'
roncobra says: Feb 26, 2012. 6:39 PM
I'm getting the following error:

WARNING: RXTX Version mismatch
Jar version = RXTX-2.2pre1
native lib Version = RXTX-2.2pre2
No Colorduino found!

RGBmtx is not "seeing" the Colorduino. It had been seeing it before but not any longer.

Guidance?
roncobra says: Feb 21, 2012. 12:57 PM
Still having trouble. I'm still getting the message "No library found for com.bric.swing
As of release 1.0, libraries must be installed in a folder named 'libraries' inside the 'sketchbook' folder." when I run RGBmtx.pde in Processing. I attached a photo of my file tree showing the location of colorpicker.jar. Is this the correct placement?
Capture.JPG
lincomatic (author) says: Feb 21, 2012. 1:07 PM
is your processing sketchbook folder set to the same as your Arduino sketchbook folder? If so, it should be ok, but it's not a good idea to mix them.. the code is incompatible.
roncobra says: Feb 22, 2012. 2:22 PM
That did it. I moved the Processing sketches to a separate folder and the message went away. RGBmtx starts up and "sees" the slave. But I am having the same problem as Newdos. Plasma works fine but the snow and meteor modes just freeze the plasma display. Unlike Newdos, I am not using a UNO, I am using a Colorduino/Duemilanove combo. I'm going to try the steps you suggested for him and see if I can figure it out.
roncobra says: Feb 7, 2012. 6:31 PM
Some guidance please. I am using the Colorduino and Arduino Duemilanova. I am connected to the laptop thru the Duemilanova and am supplying 7.5V to it as well. The Colorduino is getting power from the header from the Duemilanova. The ColorduinoSlave.pde loads fine and it runs in its plasma demo mode. RGBmtx does not see the output device.
If I load ColorduinoDevice.pde, I get the following errors when compiling: ColorduinoDevice.pde:-1: error: 'import' does not name a type ColorduinoDevice.pde:-1: error: expected initializer before 'Device'

If I load RGBmtx.pde, I get the following errors when compiling: RGBmtx.pde:-1: error: stray '#' in program RGBmtx.pde:-1: error: stray '#' in program RGBmtx.pde:-1: error: stray '#' in program RGBmtx.pde:-1: error: stray '#' in program RGBmtx.pde:-1: error: stray '#' in program RGBmtx.pde:-1: error: stray '#' in program RGBmtx.pde:-1: error: stray '#' in program RGBmtx.pde:-1: error: stray '#' in program RGBmtx.pde:-1: error: stray '#' in program RGBmtx.pde:-1: error: stray '#' in program RGBmtx.pde:-1: error: stray '#' in program RGBmtx.pde:-1: error: stray '#' in program RGBmtx.pde:-1: error: stray '#' in program RGBmtx.pde:-1: error: stray '#' in program RGBmtx.pde:-1: error: stray '#' in program RGBmtx.pde:-1: error: stray '#' in program RGBmtx.pde:-1: error: stray '#' in program RGBmtx.pde:-1: error: stray '#' in program RGBmtx.pde:-1: error: stray '#' in program RGBmtx.pde:-1: error: expected unqualified-id before 'public' RGBmtx.pde:-1: error: 'PFont' does not name a type RGBmtx.pde:-1: error: 'PFont' does not name a type RGBmtx.pde:-1: error: 'Matrix' does not name a type RGBmtx.pde:-1: error: 'Device' does not name a type RGBmtx.pde:-1: error: expected constructor, destructor, or type conversion before 'buttons' RGBmtx.cpp: In function 'void setup()': RGBmtx.pde:-1: error: 'frame' was not declared in this scope RGBmtx.pde:-1: error: 'getToolkit' was not declared in this scope RGBmtx.pde:-1: error: 'matrix' was not declared in this scope RGBmtx.pde:-1: error: expected type-specifier before 'Matrix' RGBmtx.pde:-1: error: expected `;' before 'Matrix' RGBmtx.pde:-1: error: 'size' was not declared in this scope RGBmtx.pde:-1: error: 'smooth' was not declared in this scope RGBmtx.pde:-1: error: 'noStroke' was not declared in this scope RGBmtx.pde:-1: error: 'fontA' was not declared in this scope RGBmtx.pde:-1: error: 'loadFont' was not declared in this scope RGBmtx.pde:-1: error: 'fontLetter' was not declared in this scope RGBmtx.pde:-1: error: 'frameRate' was not declared in this scope RGBmtx.cpp: In function 'void setup_buttons()': RGBmtx.pde:-1: error: 'buttons' was not declared in this scope RGBmtx.pde:-1: error: expected type-specifier before 'Button' RGBmtx.pde:-1: error: expected `;' before 'Button' RGBmtx.pde:-1: error: 'color' was not declared in this scope RGBmtx.pde:-1: error: expected `;' before 'button_color' RGBmtx.pde:-1: error: expected `;' before 'button_color_over' RGBmtx.pde:-1: error: 'matrix' was not declared in this scope RGBmtx.pde:-1: error: expected type-specifier before 'RectButton' RGBmtx.pde:-1: error: expected `;' before 'RectButton' RGBmtx.pde:-1: error: 'matrix' was not declared in this scope RGBmtx.pde:-1: error: expected type-specifier before 'RectButton' RGBmtx.pde:-1: error: expected `;' before 'RectButton' RGBmtx.pde:-1: error: expected type-specifier before 'SquareButton' RGBmtx.pde:-1: error: expected `;' before 'SquareButton' RGBmtx.pde:-1: error: 'matrix' was not declared in this scope RGBmtx.pde:-1: error: expected type-specifier before 'ModeButton' RGBmtx.pde:-1: error: expected `;' before 'ModeButton' RGBmtx.pde:-1: error: expected type-specifier before 'ActionToggleButton' RGBmtx.pde:-1: error: expected `;' before 'ActionToggleButton' RGBmtx.pde:-1: error: 'device' was not declared in this scope RGBmtx.pde:-1: error: expected `)' before 'instanceof' RGBmtx.pde:-1: error: expected `)' before ';' token RGBmtx.pde:-1: error: expected type-specifier before 'FrameChooser' RGBmtx.pde:-1: error: expected `;' before 'FrameChooser' RGBmtx.pde:-1: error: expected type-specifier before 'TextElement' RGBmtx.pde:-1: error: expected `;' before 'TextElement' RGBmtx.pde:-1: error: expected type-specifier before 'ActionButton' RGBmtx.pde:-1: error: expected `;' before 'ActionButton' RGBmtx.pde:-1: error: expected type-specifier before 'TextElement' RGBmtx.pde:-1: error: expected `;' before 'TextElement' RGBmtx.pde:-1: error: expected type-specifier before 'ActionButton' RGBmtx.pde:-1: error: expected `;' before 'ActionButton' RGBmtx.pde:-1: error: expected type-specifier before 'ActionButton' RGBmtx.pde:-1: error: expected `;' before 'ActionButton' RGBmtx.pde:-1: error: 'device' was not declared in this scope RGBmtx.pde:-1: error: expected `)' before 'instanceof' RGBmtx.pde:-1: error: expected `)' before ';' token RGBmtx.pde:-1: error: expected type-specifier before 'TextElement' RGBmtx.pde:-1: error: expected `;' before 'TextElement' RGBmtx.pde:-1: error: 'PixelColor' was not declared in this scope RGBmtx.pde:-1: error: expected `;' before 'pc' RGBmtx.pde:-1: error: expected type-specifier before 'MiniColorButton' RGBmtx.pde:-1: error: expected `;' before 'MiniColorButton' RGBmtx.pde:-1: error: 'pc' was not declared in this scope RGBmtx.pde:-1: error: expected type-specifier before 'PixelColor' RGBmtx.pde:-1: error: expected `;' before 'PixelColor' RGBmtx.pde:-1: error: expected type-specifier before 'MiniColorButton' RGBmtx.pde:-1: error: expected `;' before 'MiniColorButton' RGBmtx.pde:-1: error: expected type-specifier before 'PixelColor' RGBmtx.pde:-1: error: expected `;' before 'PixelColor' RGBmtx.pde:-1: error: expected type-specifier before 'MiniColorButton' RGBmtx.pde:-1: error: expected `;' before 'MiniColorButton' RGBmtx.pde:-1: error: expected type-specifier before 'PixelColor' RGBmtx.pde:-1: error: expected `;' before 'PixelColor' RGBmtx.pde:-1: error: expected type-specifier before 'MiniColorButton' RGBmtx.pde:-1: error: expected `;' before 'MiniColorButton' RGBmtx.pde:-1: error: expected type-specifier before 'PixelColor' RGBmtx.pde:-1: error: expected `;' before 'PixelColor' RGBmtx.pde:-1: error: expected type-specifier before 'MiniColorButton' RGBmtx.pde:-1: error: expected `;' before 'MiniColorButton' RGBmtx.pde:-1: error: expected type-specifier before 'PixelColor' RGBmtx.pde:-1: error: expected `;' before 'PixelColor' RGBmtx.pde:-1: error: expected type-specifier before 'MiniColorButton' RGBmtx.pde:-1: error: expected `;' before 'MiniColorButton' RGBmtx.pde:-1: error: expected type-specifier before 'PixelColor' RGBmtx.pde:-1: error: expected `;' before 'PixelColor' RGBmtx.pde:-1: error: expected type-specifier before 'MiniColorButton' RGBmtx.pde:-1: error: expected `;' before 'MiniColorButton' RGBmtx.pde:-1: error: expected type-specifier before 'PixelColor' RGBmtx.pde:-1: error: expected `;' before 'PixelColor' RGBmtx.pde:-1: error: expected type-specifier before 'MiniColorButton' RGBmtx.pde:-1: error: expected `;' before 'MiniColorButton' RGBmtx.pde:-1: error: expected type-specifier before 'TextElement' RGBmtx.pde:-1: error: expected `;' before 'TextElement' RGBmtx.pde:-1: error: expected type-specifier before 'ActionButton' RGBmtx.pde:-1: error: expected `;' before 'ActionButton' RGBmtx.pde:-1: error: expected type-specifier before 'ActionButton' RGBmtx.pde:-1: error: expected `;' before 'ActionButton' RGBmtx.pde:-1: error: expected type-specifier before 'ActionButton' RGBmtx.pde:-1: error: expected `;' before 'ActionButton' RGBmtx.pde:-1: error: expected type-specifier before 'ActionButton' RGBmtx.pde:-1: error: expected `;' before 'ActionButton' RGBmtx.pde:-1: error: expected type-specifier before 'ActionButton' RGBmtx.pde:-1: error: expected `;' before 'ActionButton' RGBmtx.pde:-1: error: expected type-specifier before 'ActionButton' RGBmtx.pde:-1: error: expected `;' before 'ActionButton' RGBmtx.pde:-1: error: expected type-specifier before 'ActionButton' RGBmtx.pde:-1: error: expected `;' before 'ActionButton' RGBmtx.pde:-1: error: expected type-specifier before 'ActionButton' RGBmtx.pde:-1: error: expected `;' before 'ActionButton' RGBmtx.pde:-1: error: expected type-specifier before 'ActionButton' RGBmtx.pde:-1: error: expected `;' before 'ActionButton' RGBmtx.pde:-1: error: expected type-specifier before 'ActionButton' RGBmtx.pde:-1: error: expected `;' before 'ActionButton' RGBmtx.cpp: In function 'void draw()': RGBmtx.pde:-1: error: 'device' was not declared in this scope RGBmtx.pde:-1: error: expected type-specifier before 'ColorduinoDevice' RGBmtx.pde:-1: error: expected `;' before 'ColorduinoDevice' RGBmtx.pde:-1: error: 'ColorduinoDevice' was not declared in this scope RGBmtx.pde:-1: error: expected `)' before 'device' RGBmtx.pde:-1: error: 'background' was not declared in this scope RGBmtx.pde:-1: error: 'fill' was not declared in this scope RGBmtx.pde:-1: error: 'matrix' was not declared in this scope RGBmtx.pde:-1: error: 'rect' was not declared in this scope RGBmtx.pde:-1: error: 'image' was not declared in this scope RGBmtx.pde:-1: error: 'buttons' was not declared in this scope RGBmtx.pde:-1: error: 'null' was not declared in this scope RGBmtx.pde:-1: error: 'text' was not declared in this scope RGBmtx.pde:-1: error: 'device' was not declared in this scope RGBmtx.pde:-1: error: 'text' was not declared in this scope RGBmtx.pde:-1: error: 'device' was not declared in this scope RGBmtx.cpp: In function 'void next_frame()': RGBmtx.pde:-1: error: 'ColorduinoDevice' was not declared in this scope RGBmtx.pde:-1: error: expected `)' before 'device' RGBmtx.pde:-1: error: expected `)' before '}' token RGBmtx.pde:-1: error: expected primary-expression before '}' token RGBmtx.pde:-1: error: expected `;' before '}' token RGBmtx.pde:-1: error: 'matrix' was not declared in this scope RGBmtx.pde:-1: error: 'matrix' was not declared in this scope RGBmtx.pde:-1: error: 'matrix' was not declared in this scope RGBmtx.cpp: In function 'void mouseDragged()': RGBmtx.pde:-1: error: 'matrix' was not declared in this scope RGBmtx.pde:-1: error: 'mouseX' was not declared in this scope RGBmtx.pde:-1: error: 'mouseY' was not declared in this scope RGBmtx.cpp: In function 'void mousePressed()': RGBmtx.pde:-1: error: 'matrix' was not declared in this scope RGBmtx.pde:-1: error: 'mouseX' was not declared in this scope RGBmtx.pde:-1: error: 'mouseY' was not declared in this scope RGBmtx.cpp: In function 'void mouseMoved()': RGBmtx.pde:-1: error: 'buttons' was not declared in this scope RGBmtx.pde:-1: error: 'null' was not declared in this scope RGBmtx.cpp: In function 'void mouseClicked()': RGBmtx.pde:-1: error: 'buttons' was not declared in this scope RGBmtx.pde:-1: error: 'null' was not declared in this scope RGBmtx.cpp: In function 'void keyPressed()': RGBmtx.pde:-1: error: 'keyCode' was not declared in this scope RGBmtx.pde:-1: error: 'keyCode' was not declared in this scope RGBmtx.pde:-1: error: 'keyCode' was not declared in this scope RGBmtx.pde:-1: error: 'keyCode' was not declared in this scope RGBmtx.pde:-1: error: 'buttons' was not declared in this scope RGBmtx.pde:-1: error: 'null' was not declared in this scope RGBmtx.pde:-1: error: 'keyCode' was not declared in this scope RGBmtx.pde:-1: error: 'device' was not declared in this scope RGBmtx.pde:-1: error: expected `)' before 'instanceof' RGBmtx.pde:-1: error: 'keyCode' was not declared in this scope RGBmtx.pde:-1: error: 'StandaloneDevice' was not declared in this scope RGBmtx.pde:-1: error: expected `)' before 'device' RGBmtx.pde:-1: error: 'keyCode' was not declared in this scope RGBmtx.pde:-1: error: 'StandaloneDevice' was not declared in this scope RGBmtx.pde:-1: error: expected `)' before 'device' RGBmtx.pde:-1: error: 'keyCode' was not declared in this scope RGBmtx.pde:-1: error: 'StandaloneDevice' was not declared in this scope RGBmtx.pde:-1: error: expected `)' before 'device' RGBmtx.pde:-1: error: 'keyCode' was not declared in this scope RGBmtx.pde:-1: error: 'StandaloneDevice' was not declared in this scope RGBmtx.pde:-1: error: expected `)' before 'device' RGBmtx.pde:-1: error: 'PixelColor' was not declared in this scope RGBmtx.pde:-1: error: expected `;' before 'pc' RGBmtx.pde:-1: error: 'keyCode' was not declared in this scope RGBmtx.pde:-1: error: 'pc' was not declared in this scope RGBmtx.pde:-1: error: 'matrix' was not declared in this scope RGBmtx.pde:-1: error: 'fontLetter' was not declared in this scope RGBmtx.pde:-1: error: 'pc' was not declared in this scope RGBmtx.pde:-1: error: 'null' was not declared in this scope RGBmtx.pde:-1: error: 'matrix' was not declared in this scope RGBmtx.pde:-1: error: 'keyCode' was not declared in this scope RGBmtx.pde:-1: error: 'keyCode' was not declared in this scope RGBmtx.cpp: In function 'void keyReleased()': RGBmtx.pde:-1: error: 'keyCode' was not declared in this scope RGBmtx.pde:-1: error: 'keyCode' was not declared in this scope RGBmtx.pde:-1: error: 'keyCode' was not declared in this scope RGBmtx.pde:-1: error: 'keyCode' was not declared in this scope RGBmtx.cpp: In function 'void toggle_mode()': RGBmtx.pde:-1: error: 'matrix' was not declared in this scope RGBmtx.pde:-1: error: 'buttons' was not declared in this scope RGBmtx.pde:-1: error: 'null' was not declared in this scope RGBmtx.pde:-1: error: 'buttons' was not declared in this scope RGBmtx.pde:-1: error: 'buttons' was not declared in this scope RGBmtx.cpp: In function 'void set_mode(int)': RGBmtx.pde:-1: error: 'matrix' was not declared in this scope RGBmtx.pde:-1: error: 'matrix' was not declared in this scope RGBmtx.pde:-1: error: 'matrix' was not declared in this scope RGBmtx.pde:-1: error: 'buttons' was not declared in this scope RGBmtx.pde:-1: error: 'null' was not declared in this scope RGBmtx.pde:-1: error: 'buttons' was not declared in this scope RGBmtx.pde:-1: error: 'buttons' was not declared in this scope RGBmtx.pde:-1: error: 'device' was not declared in this scope RGBmtx.pde:-1: error: 'ColorduinoDevice' was not declared in this scope RGBmtx.pde:-1: error: expected `)' before 'device' RGBmtx.pde:-1: error: 'ColorduinoDevice' was not declared in this scope RGBmtx.pde:-1: error: expected `)' before 'device' RGBmtx.pde:-1: error: 'ColorduinoDevice' was not declared in this scope RGBmtx.pde:-1: error: expected `)' before 'device' RGBmtx.cpp: At global scope: RGBmtx.pde:-1: error: 'import' does not name a type RGBmtx.pde:-1: error: 'import' does not name a type RGBmtx.pde:-1: error: 'import' does not name a type RGBmtx.pde:-1: error: expected initializer before 'GuiElement'

Sorry so long. Any guidance?
lincomatic (author) says: Feb 7, 2012. 9:24 PM
Yikes, next time, you don't need to include so much text. The first few lines are enough! I don't understand you question: "ColorduinoSlave.pde loads fine and it runs in its plasma demo mode. RGBmtx does not see the output device. If I load ColorduinoDevice.pde, I get the following errors when compiling: ColorduinoDevice.pde:-1: error: "

You should only load RGBmtx into Processing. If it isn't finding the board, then you need to check your connections first. You can't directly load ColorduinoDevice.pde into Processing... it's loaded by RGBmtx.pde.
roncobra says: Feb 13, 2012. 9:37 AM
As for connections, I am using the Duemilanove with the MCU removed. It is connected to an 8V, 1A supply. It connects to the computer with the USB cable. The Duemilanove connects to the Colorduino as such: Duem RESET to Color DTR, Duem Gnd to Color GND, Duem TX to Color TXD, Duem RX to Color RXD, Duem 5V to Color VDD. As for procedure, I open and upload ColorduinoSlave.pde and the matrix goes into plasma mode. From there, I cannot get any further. I try to open RGBmtx but it doesn't see the output. It doesn't matter if I open RGBmtx.pde in the IDE or not. I tried uploading the RGBmtx but that gives me the errors specified before. So what step am I missing or what do you suggest I check. I assume the computer "sees" the Duemilanove since the plasma works after I upload it. But the RGBmtx program does not.
lincomatic (author) says: Feb 13, 2012. 11:22 AM
As I said before, RGBmtx runs in Processing, not on the Arduino. You have to download and install Processing, and then install it from there.
roncobra says: Feb 13, 2012. 3:17 PM
Basically my goal is to do the color organ music synch. Am I taking the right path?
lincomatic (author) says: Feb 15, 2012. 4:19 PM
Yes, unfortunately, due to lack of memory in the Arduino, it needs to run RGBmtx in order to do the music synch.
roncobra says: Feb 13, 2012. 2:59 PM
Sorry, I didn't know Processing was an actual program. I downloaded it, installed it and attempted to run RGBmtx.pde. I get the following message: No library found for com.bric.swing
As of release 1.0, libraries must be installed in a folder named 'libraries' inside the 'sketchbook' folder.
So where do I find this library and where do I put it?
lincomatic (author) says: Feb 15, 2012. 4:19 PM
If you unzip RGBmtxV1.1.zip directly into your Processing sketchbook folder, you should end up with
/RGBmtx
and
/libraries/colorpicker

the missing library is in colorpicker.jar
roncobra says: Feb 13, 2012. 10:28 AM
As a side note, when using the Duemilanove with an external power supply, should the power light come on? I only get the power light on once I connect the USB cable.
lincomatic (author) says: Feb 13, 2012. 11:22 AM
Something is wrong with your power hookup. It should power up without the USB
roncobra says: Feb 13, 2012. 12:30 PM
I figured out there must be something wrong with the Duemilanove since the power was not being distributed to the header. I ran a different power source direct to the header and the power lights, etc come on without the USB.
roncobra says: Feb 14, 2012. 7:02 PM
My goal is to use the music synchronization feature. I uploaded ColorduinoSlave through Arduino IDE. Then I loaded RGBmtx.pde into Processing. When I run it I get the message:

No library found for com.bric.swing
As of release 1.0, libraries must be installed in a folder named 'libraries' inside the 'sketchbook' folder.

Where do I find this library and where do I put it?
lincomatic (author) says: Feb 15, 2012. 4:18 PM
If you unzip RGBmtxV1.1.zip directly into your Processing sketchbook folder, you should end up with
/RGBmtx
and
/libraries/colorpicker

the missing library is in colorpicker.jar
mikerosati says: Apr 15, 2011. 11:44 AM
This is a great build - thanks for sticking around to answer questions from fans of it..

I've got one - I just received my package from itead (purchased the color shield and the 64 round rgb display for testing, as you have..)

I have the color shield set up with a brand new uno, and can't seem to get your app to talk to the arduino through usb.. When the app runs, the rgb display (that is running your plasma output) blinks for a second, then goes back to plasma, and the app says it can't see an output device..
Any advice on forcing it to see the uno/color shield?
mikerosati says: Apr 15, 2011. 11:47 AM
Update: My listed port on my win box is "Arduino UNO (COM6)"
lincomatic (author) says: Apr 15, 2011. 12:19 PM
Hi, the way it detects the target it is via the openPort() method in ColorduinoDevice.pde of the Processing sketch. In openPort(), the function scans for your serial ports and tries sending a ping() command to any open ports that it finds. If the ping() is successful, then it has found the target board. Did you change the baud rate? In ColorduinoDevice.pde, look for
int baud = 57600
It should match the value found in the Arduino sketch, ColorduinoSlave.pde:
#define BAUD_RATE 57600
If the baud rates match up, then you need to add debugging print statements into ColorduinoDevice.pde to figure out what's going on. If you look at the ping() function, there's a debug line commented out:
// print("pingrc");print(rc);
uncomment the line and see if it displays anything in the Processinging IDE during runtime. If it doesn't print that line out, then it's not finding your serial port. If it returns -1, then your Arduino isn't responding correctly.
mikerosati says: Apr 15, 2011. 1:39 PM
Thanks for the reply :)
It appears that I've got a crazy port or two on my desktop, as all is working perfectly from a laptop.. - The desktop isn't showing a thing with debugging on.. I'll break out the baseball bat later :)

Thanks again for the info..
lincomatic (author) says: Apr 15, 2011. 6:40 PM
@mikerosati, thanks for bringing up the problem. For the benefit of others, the problem was that mikerosati's UNO had the Arduino bootloader installed, which takes longer too boot up then my setup, which had no bootloader. I increased the delay when scanning for Colorduino's in the processing sketch. The instructable has already been updated w/ v1.1
jgardner-1 says: May 2, 2011. 9:43 PM
Hey lincomatic: I've struck a similar problem, again using an Arduino Uno and Colorshield rather than the Colorduino. The Plasma code uploads and runs fine, but no matter how much I tweak the delay settings in ColorduinoDevice.pde, RGBmtx will not recognise the Arduino: the processing code returns a timeout (-1).

The baud rates match, the serial drivers are up to date, the Com port with the Uno on it is working correctly, and I've got the same error on multiple different computers.

I will keep fiddling with the code, and trying different systems, but any advice or ideas you have would be great.

And, very importantly, THANKS for the awesome build. I have had a blast building this...
lincomatic (author) says: May 3, 2011. 12:00 AM
Oh man, you're the 4th person with an Uno who's run into this problem. Unfortunately, I don't have either an Uno or a Colorshield, and I've been banging my head on the wall trying to figure out what the cause could be. Without having access to the hardware to debug it, all I can do is take wild stabs in the dark.
What happens when you slow down the baud rate on both sides? Try 19200 on both sides and see if that wakes it up.
raynbow says: Jan 5, 2012. 4:45 AM
Hey lincomatic, sorry to wake up this UNO/RGBmtx issue
i have noticed there is long duration of reset time during RGBmtx start up
so i assume there sync issue between RGBmtx and UNO
perform UNO manual reset when clicking on RGBmtx icon solve the problem
hop this put some light for other UNO users
(sorry for mistakes, my English is not a pearl)
lincomatic (author) says: Feb 15, 2012. 4:10 PM
Thanks for the feedback! Hopefully, this will help other Uno users.
jgardner-1 says: May 3, 2011. 5:59 AM
lincomatic - sorry to stress you out, man. I've figured it out, and it was completely my error. I had uploaded ColorduinoPlasma to the board, assuming that sketch held the slave protocols for RGBmtx. Finally I realised that there was a separate ColordunioSlave sketch which held the plasma animation but also included the slave protocols. When I uploaded that to the Uno, RGBmtx worked fine. Whole build is operating exactly as advertised, which is sweet :)

Maybe some of the other folks with problems are making the same error? That'd be nice, I'd feel less stoopid...
lincomatic (author) says: May 3, 2011. 7:54 AM
Great! Now I know that at least *SOME* people can get the Uno/Colorshield combination working!
radeonorama says: Jan 24, 2012. 2:08 PM
I have delved into creating my own version of your floor lamp but with a twist to integrate it into a coffee table with no grid separators.

I'm please to say, that with some great help from my wife with the wire wrapping, we have pulled it off!! :-)

If you're interested, here's a video:

http://www.youtube.com/watch?v=pwrHY59VxO8

I just have become a bit stuck with the RGBmtx pc app and wondered if you might be able to offer some help? :-)

I am seemingly able to get the software to connect to the grid but nothing works but the plasma mode. I have a this cable directly connected to the colordunio

http://www.tronisoft.com/2472.php

like this:

Green : RTS (Requeset to Send) -> DTR
Orange : TTL Transmit Tx (output) -> TXD
Yellow : TTL Receive Rx (input) -> RXD

and am using a usb 5v 1amp adaptor to power things through the 4screw terminal.

The plasma works great but nothing else seems to :-(

I have tried changing the int baud to no avail.

To give you a bit more info about the RGMmtx and its behaviour, when i run it up, everything seems to connect ok (as the "no output device" message DOES NOT appear) and when switching modes, nothing works except for the plasma mode. every other mode just freezes the grid. :-/

I'm relatively new to this sort of thing but i don't think its my diy matrix grid as i have had the 60x60mm RGB matrix plugged directly into the Colorduino and that has the same issue.

Any help would be really really appreciated.

All the best and thanks for such a great instructable!! :-)

Cheers, John
lincomatic (author) says: Jan 24, 2012. 6:12 PM
Interesting build.. your table is rectangular, but it's still 8x8?

You should disconnect RTS/DTR. The sketch doesn't use hardware handshaking. One very important connection that's missing is GND. The signalling won't work without it. You need to also connect

Black: GND -> GND

If that doesn't work, try also reversing Rx/Tx, although that probably isn't the problem, since it seems to detect the Colorduino.
The problem is definitely in the communication.
radeonorama says: Feb 4, 2012. 6:05 AM
Thanks for that.

Yeah, its rectangular and still 8x8. I wasnt sure if 128 leds would draw to much power and i didnt want to risk it. I also didnt add the deviders with the intention of maybe adding them later, but i really like the effect it has when its not devided.

Still having the same issues though. :-(

Could there be anythig else i am missing, or maybe the cable i am using isnt good enough/faulty?

Is there an alternate way i can connect it to the machine?
lincomatic (author) says: Feb 4, 2012. 8:32 AM
Yes, 128 LED's would be out of spec, but since it's pulsing them, you might be able to get away with it. Best to use transistors to drive them for higher current, though.

So did you try the serial wiring I recommended above?
radeonorama says: Feb 4, 2012. 9:23 AM
yeah, I tried the GND and switching of RTS/DTR and it still freezes? :-(

This was the connections i used to program it initially and back when i was using the mini matrix, i tried the app and it also froze.

1 : Green : RTS (Requeset to Send) -> DTR
2 : Black : Ground -> GND
3 : Orange : TTL Transmit Tx (output) -> RXD
4 : Yellow : TTL Receive Rx (input) -> TXD
5 : Red : Vcc +5V typical (output) -> VDD

I have tried your suggestion and the connections here today with the mini board and none seem to work. :-(

any ideas?
lincomatic (author) says: Feb 4, 2012. 1:49 PM
I said not to connect RTS/DTR. Did you try that?
What's strange is that you say RGBmtx detects the board and seems to communicate.. I'm assuming you've tried editing the matrix in Slave mode, and it didn't update the matrix in realtime?
You might want to try setting a slower baud rate, in case you're getting data corruption. Make sure you set the same baud rate on both Arduino and Processing.. try 9600.. that's slow enough that it should work even w/ noisy wiring.
radeonorama says: Feb 4, 2012. 4:02 PM
Sorry, i was being an idiot in what i wrote! I tried switching RXD and TXD with no joy, and also tried disconnecting DTR. Just about to hit bed now, but i will give the baud rate change tomorrow. :-)

I will let you know how i get on! Thanks for your help.
radeonorama says: Feb 4, 2012. 4:10 PM
So, i thought stuff it and did some mucking about now and still no good.

I have tried disconnecting the dtr. If i switc the txd and rxd then the board is not detected at all so i guess thats right.

Having droped the baud rate to 9600 on Ardunio and Processing and its still not having it :-(

Any ideas on what else i can try?? Please :-)
lincomatic (author) says: Feb 7, 2012. 9:20 PM
Sorry, I really don't know how to help remotely like this. You can try the code in ColorduinoDeviceDbg.zip ... replace the regular ColorduinoDevice.pde with the debug version.. it prints some diagnostics to the Processing console, but unless you can figure out the code, it might not help... barring that I suppose you could send me your board and USB serial adapter to debug, but I don't know if it will work on your computer
m1s73r says: Feb 7, 2012. 2:40 AM
Ok this step is a little bit too complicated for me... I just want to control my 8x8 RGB Matrix with this software, so which code do I upload on my arduino? And were should I put RGBmtx.pde? I'm on a mac... Please give me a detailed step by step answer so that I can comprehend the single steps.

Thanks a lot!
lincomatic (author) says: Feb 7, 2012. 8:26 PM
RGBmtx.pde runs in Processing on your Mac. You need to download and install it. Follow Step 17 to load ColorduinoSlave.pde into your Arduino.
newdos says: Dec 29, 2011. 4:49 AM
Hi Lincomatic - hope you still read this blog!!!
I have moved on since the last comment below, but now I can get the colorduinosalve.pde to compile and go via my uno (by selecting AT Mega328 as the board in arduino IDE) to my rainbowduino but all I get on my rainbowduino with 8x8 rgb matrix plugged in is rows of flickering pinky/red leds and the row 3rd from the bottom is blank - no plasma mode running at all
HELP!!! really want to build this project but I must get it working first on the matrix.

Look forward to you reply Cheers!!!
lincomatic (author) says: Jan 19, 2012. 10:52 AM
Hi, sorry, I was out of the country. Did you get this resolved? I can't help you if you're using a rainbowduino. I built this with a colorduino.
You should first check your wiring ... use a battery and resistor and check each individual LED to make sure they light up properly and that only 1 LED at a time is lit.
newdos says: Jan 20, 2012. 12:11 PM
Hi Lincomatic thanks for getting back to me - what I am using is a rainbowduino and a 8x8 rgb matric plugged directly into it and I still get the same problem I have tried everything!!! What I dont understand if it is vecause it is a rainbowduino I am using how come everyone elese software I load onto it (might add via a UNO without issue!!) works fine is all the standard morphing pdes ? Would really like to get this going as I have bought all the kit but cant even get it working on the plugged in matrix help!!!

Cheers Kev
lincomatic (author) says: Jan 20, 2012. 1:07 PM
my code works only on colorduino. it will *not* work on rainbowduino. sorry. you can go to seeed's wiki for help with the rainbowduino. the drivers on that board are completely different, and are programmed differently.
newdos says: Jan 23, 2012. 5:29 AM
Thanks lincomatic I will order a colorduino and see if that does the trick - it's a bit weird thought as they say the rainbowduino is supposed to be compatible with colorduino!!
for info I have just finished your daftpunk 5x5 matrix and it works a treat synced to sound. One thing I have done though is to mod the software to add automatic gain control to handle volume changes and it works a treat and produces some interesting effects. If you are interested in this I will post the sketch.
One question on your op amp design for audio input I noticed I wasnt getting any gain increase and I think there is a resistor missing between the (-) input and ground as in this link here http://www.radio-electronics.com/info/circuits/opamp_basics/operational-amplifier-gain.php
by adding this it then gave me any gain I wanted. Thoughts ?(as I am no expert on this) Cheers Kev.
lincomatic (author) says: Jan 24, 2012. 6:32 PM
Kev,
Oops! You're right! I forgot the 10K resistor between the - input and ground. I'll correct the Instructable.
turiphro says: May 24, 2011. 5:38 AM
Hi!

Thanks for the great idea! We build our own in 24 hours, including wooden stand.

We made a timelapse of the whole process, which you can see here:
http://www.youtube.com/watch?v=eNTNvxgHTDw

Enjoy!


In addition, we can confirm that soldering the LEDs makes it (a lot) more difficult to put the LEDs in the cubes, but otherwise the wires often got loose while installing them. And I think soldering increases stability.
IMG_20110524_012426.jpgIMG_20110523_153727.jpg
lincomatic (author) says: Jan 24, 2012. 6:15 PM
BTW, if the wires get loose, then either you're not wrapping tight enough, or you're using too few wraps. Since the LED wires are square, the wrapping should really bite in and give you tight, reliable connections.
lincomatic (author) says: May 24, 2011. 8:19 AM
Great build! That was a great idea to do the time lapse video. Thanks for sharing!
newdos says: Jan 6, 2012. 1:04 PM
Ive tried everything will someone lease help!!!!!!!!!!!
newdos says: Dec 23, 2011. 5:29 AM
Help I get all these errors when I try and compile your code!!! newby!!
In file included from sketch_dec23a.cpp:28:
D:\arduino-1.0-windows\arduino-1.0\libraries\Colorduino/Colorduino.h:23:22: error: WProgram.h: No such file or directory
In file included from D:\arduino-1.0-windows\arduino-1.0\hardware\arduino\cores\arduino/Arduino.h:212,
from sketch_dec23a.cpp:52:
D:\arduino-1.0-windows\arduino-1.0\hardware\arduino\variants\standard/pins_arduino.h:45: error: expected unqualified-id before 'volatile'
D:\arduino-1.0-windows\arduino-1.0\hardware\arduino\variants\standard/pins_arduino.h:45: error: expected `)' before 'volatile'
D:\arduino-1.0-windows\arduino-1.0\hardware\arduino\variants\standard/pins_arduino.h:45: error: expected `)' before 'volatile'
D:\arduino-1.0-windows\arduino-1.0\hardware\arduino\variants\standard/pins_arduino.h:46: error: expected unqualified-id before 'volatile'
D:\arduino-1.0-windows\arduino-1.0\hardware\arduino\variants\standard/pins_arduino.h:46: error: expected `)' before 'volatile'
D:\arduino-1.0-windows\arduino-1.0\hardware\arduino\variants\standard/pins_arduino.h:46: error: expected `)' before 'volatile'
radeonorama says: Dec 29, 2011. 12:39 PM
Hey dude, can you let me know how you came to fixing this issue pls? I have just hit the same one :-/

All the best and thanks in advance! :-D
newdos says: Dec 30, 2011. 8:32 AM
this bit was easy search for Wprogram.h and replace it with Arduino.h that should get you to where I am
radeonorama says: Dec 30, 2011. 9:16 AM
Ahha! Nice one dude, just done now and compiled! Just waiting on my board to arrive and ill let you know how i get on too! :-D
newdos says: Dec 29, 2011. 4:51 AM
PS forget to say I know the comms through the arduino uno to the rainbowduino must be ok as if I load someone elses standard plasma.pde it runs the matrix fine - over to you!!!!
ngarcia9 says: Sep 24, 2011. 7:28 PM
How are you powering your Colorduino? Is a arduino necessary for this?
lincomatic (author) says: Sep 24, 2011. 9:11 PM
I'm using a 5V USB wall wart. To do that, you have to bypass the onboard regulator. There's a switch.
ngarcia9 says: Sep 24, 2011. 10:19 PM
ok cool so you don’t need an arduino or anything then?
lincomatic (author) says: Sep 25, 2011. 9:40 AM
I used an Arduino just as a serial cable. You need a serial interface to your computer, such as an FTDI cable
ngarcia9 says: Sep 25, 2011. 11:59 AM
I’m sorry for my lack of knowledge, but I’m extremely new…
So I can get an FTDI cable to bypass an Arduino? Or I still need one?
lincomatic (author) says: Sep 25, 2011. 8:20 PM
The Colorduino only has built-in 5V serial. You need a serial connection to communicate between your computer and the Colorduino. Since computers don't have 5V serial, you need to convert that to something that can connect to your computer. If your computer has a USB port, a 5V serial -> USB converter is the easiest way, such as an FTDI cable http://www.sparkfun.com/products/9718
or something like this:
http://www.sparkfun.com/products/718
radeonorama says: Dec 21, 2011. 3:25 PM
Amazing project dude! Im planning on making one soon and am just getting the bits and pieces together.

Can i ask, does that mean that a cable such as this: http://www.tronisoft.com/prod.php?id=2472 is able to actually power the unit as well as program it too?

Thanks in advance!
fcohen1 says: Nov 13, 2011. 8:08 PM
(removed by author or community request)
magicthegathering says: Sep 10, 2011. 12:28 AM
Great project. Is there anyway you could add a small guide for hooking up an sd card reader so you could use it without the computer? I am not sure where to start with that. Thanks.
lincomatic (author) says: Sep 12, 2011. 10:27 AM
Hi, there are plenty of SD card tutorials for Arduino if you just google for them.
magicthegathering says: Sep 14, 2011. 8:06 PM
I will try that, cheers.
emihackr97 says: Jul 29, 2011. 1:54 PM
you should add capabilities of reading an SD card, so you can store the animations in there and don't have the need of a computer.
emihackr97 says: Jul 29, 2011. 1:53 PM
THIS is a true monster! http://www.youtube.com/watch?v=f1YNyQqbiF0&NR=1
colossus135 says: Jul 10, 2011. 5:41 AM
(removed by author or community request)
lincomatic (author) says: Jul 10, 2011. 9:11 AM
It runs the plasma only when it's not connected to a computer. The Colorduino doesn't have enough memory to store the animations. To do the animations as a standalone unit, it would need an SD card. So you need to connect to a computer via USB to feed it the animations.
colossus135 says: Jul 10, 2011. 1:30 PM
(removed by author or community request)
lincomatic (author) says: Jul 11, 2011. 7:57 AM
If you take a look at my Daft Punk instructable, I stored the animations on the MCU in that project. Since I was doing monochrome 5x5 on that one, they were small enough to fit in. Instead of storing them in flash, you would simply store them as files on an SD card.
colossus135 says: Jul 11, 2011. 6:11 PM
Excellent. One last related question: when using the music sync does that too require it to be connected to a computer?
lincomatic (author) says: Jul 13, 2011. 10:17 AM
As currently implemented, yes, because it needs the computer to feed it images.
caphouse says: Jun 18, 2011. 9:13 PM
Well done!

I love your project.


shukoroshi says: Jun 9, 2011. 10:28 AM
I was wondering which LEDs you used. I see various common anode diffused LEDS on ebay, but in varying brightnesses. Which did you use? I don't want my project to be too dim or too bright.
lincomatic (author) says: Jun 9, 2011. 12:04 PM
Too bright is definitely not a problem. You can always lower the brightness via software. The LED's I got varied quite a bit in color temperature, which is why I didn't mention the seller. Beware, the brightness specs posted by ebayers are generally not reliable.
shukoroshi says: Jun 9, 2011. 12:07 PM
Do you have any general guidelines for buying LEDs from eBay then? I found lots of 100 ranging from $20-50. How do I tell what is good, and what isn't? The last thing I want to do is spend hours putting these in, only to find that they are garbage and have to pull them out and replace them.
lincomatic (author) says: Jun 9, 2011. 1:47 PM
Feedback % is a good indicator. If the mcd claims seem outrageously high, then they probably are. I would stay away from the vendors who post outrageous info. This is what I used: http://cgi.ebay.com/100-pcs-RGB-Diffused-Common-Anode-LED-Free-Resistors-/160539806009?pt=LH_DefaultDomain_0&hash=item2560eb0939
The seller had good communication. He sent me the wrong parts, and then cheerfully sent me the correct parts when I complained. Now, I have to figure out what to do with a pile of 100 common cathode RGB LED's (he let me keep the incorrect parts). The problem, though, was his parts had inconsistent color temperature. I have a feeling the many of eBay sellers from China probably are selling slightly out of spec parts.. that's why they're so cheap.
jsibbs says: Apr 27, 2011. 5:46 PM
Thanks again for putting this build up, its amazing so far.

I'm having a problem getting RBGmtx to identify my colorduino. I read through previous comments and increased the time ColorduinoDevice will wait for a ping to around 10 seconds just to be safe, and still no connection. I'm using the USBtinyISP kit to connect to the colorduino, and in my attempts to fix this issue I connected my Arduino Uno to the Colorduino like you suggested in step 16. Any ideas?
jsibbs says: Apr 27, 2011. 7:23 PM
As an addendum, I know that the USBtinyISP is working since I can upload sample code to the board and have it work fine. I've also reinstalled the slave program and the plasma code is working perfectly. For some reason though RGBmtx still isn't recognizing the board.
lincomatic (author) says: Apr 27, 2011. 8:38 PM
If the plasma stops when you start RGBmtx, then the board is seeing the commands, but somehow, the response isn't being seen by the host.
I put some debug code into ColorduinoDeviceDbg.zip.
You can download it from step 18: http://www.instructables.com/id/Lampduino-an-8x8-RGB-Floor-Lamp/#step18

Use that file to replace the current ColorduinoDevice.pde and run it. In the bottom pane of the Processing IDE, it will show you which serial ports it's scanning, and a pingrc=xxx value. Does it scan the port that your Colorduino is connected to? What's the pingrc value?
jsibbs says: Apr 28, 2011. 1:40 PM
So I tried it again today (It turns out I forgot to take out the ATmega chip from my Uno) and then everything was working. I set the white balance and everything correctly, but when I tried to change the latency timer, after unplugging and plugging back in my aurduno the software wont recognize the colorduino anymore. I tried resetting the timer but that didn't fix it either. I know the colorduino is connected to port 7 through my arduino, and the pingrc value is -1. If i'm reading the code right -1 is returned when the connection isn't made within the amount of time given by a counter. I tried setting the counter to a really high number, like 100000, but I'm still getting the same error.

On the plus side, i'm so excited this is actually working so far. Usually projects I build go up in flames at this point.
lincomatic (author) says: Apr 28, 2011. 3:28 PM
Glad you got it working, but sorry you're having problems now. I'm a bit confused.. you tried to change the latency timer in the driver as in step 20? Since you're using an Uno, it doesn't use an FTDI chip, so you don't need to do it. I suggest reverting the driver latency settings back and seeing if it works again.
jsibbs says: Apr 29, 2011. 2:34 AM
I reset the driver settings and still no luck, I even completely reinstalled the driver and that didn't help either. The software is checking COM7 (where the arduino is plugged in), but claims there is no Colorduino there. I have no idea what could be wrong at this point, especially because it was working earlier today.

The arduino is wired to the colorduino:
RX -> RXD
TX -> TXD
Reset -> DTR

The colorduino's power supply is coming from a 5V wall adapter. I don't know what other information is relevant, but do you have any idea of what could be wrong? Once again, thank you so much for helping me out like this, i really appreciate it.
lincomatic (author) says: Apr 29, 2011. 8:10 AM
you need to connect the grounds together between the colorduino and the uno. if that doesn't help, then, assuming that the reason it stopped working is your driver tweaks, use device manager to remove the driver, then unplug/plug it back in to reinstall. let me know how it goes.
jsibbs says: May 4, 2011. 6:04 PM
So I think I'm really close to having a working lampduino! I'm using the Duemilanove now, and whenever i start up RGBmtx the board noticeably flickers on and off a few times. I think you mentioned before this means that the board is trying to communicate back to the software but it's not working for some reason? The rc value is -1 still for the port I'm using. Is there something obvious I'm missing?
lincomatic (author) says: May 4, 2011. 6:42 PM
Tell me again exactly how everything is connected. In your msg above, some of the connections were missing. Also, you said you were powering it from a 5v wall adapter...which pins are that connected to?

In my setup, I'm powering the Deumilanove from 5V, and powering the Colorduino from the Deumilanove. When programming, I have the USBtinyISP connected, w the 5v power jumper removed.
jsibbs says: May 4, 2011. 7:23 PM
After I uploaded the ColorduinoSlave program to the Colordruino i disconnected the USBtinyISP. Now I have a Duemilanove chip with the ATmega chip removed with the following pins going between the board and the colorduino:

Reset -> DTR
GND -> GND
TX -> TXD
RX -> RXD
5V -> VDD

Then on my Dumilanove I have a 5v wall adapter plugged into my Vin pin and othe GND pin. The board in my device manager registers as "USB Serial Port (COM8)"

Right now I have a Arduino Uno plugged into my computer on COM7, but that shouldn't be a problem, should it?


lincomatic (author) says: May 4, 2011. 10:30 PM
Sorry, I got mixed up, my setup uses 7.5V going into the Deumilanove's power jack, but yours should work fine, as long as your power is clean.

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.
jsibbs says: May 4, 2011. 11:59 PM
Turns out the board doesn't light up white, its just flickers on and off, so I think there's still a problem with the board receiving packets.

Sidenote: The ColorduinoSlave code wouldn't upload with CMODE_COLOR_FILL, I changed it to CMODE_FILL and it seemed to work.

I'm sorry this is being so much trouble, and I know it's probably something really silly that I'm doing that I don't know is silly because I've never done a project like this before. Thanks again for being so much help.
lincomatic (author) says: May 5, 2011. 12:20 AM
Sorry, typo on my part. Don't feel too bad.. getting the comms to work is pretty fiddly.. it took me a surprising amount of code tweaking to get what I thought would be an easy task to work right. Assuming you're SURE that you got the wiring right ... just some wild stabs in the dark:
1) try lowering the baud rate on both sides ... say 19200.
2) try a different power supply, e.g. a 9V battery to the power port on the Arduino
3) try fiddling with different latency settings in the driver. You might have to connect/disconnect it to make the settings stick.
It's very hard to try to diagnose these things w/o being able to actually touch the hardware, unfortunately.
jsibbs says: Apr 29, 2011. 9:07 AM
I tried everything I could think of in the past four hours and still no luck. I have a Duemilanove coming in the mail on Tuesday so I'll try again with that. I'll try and find something else to do with my UNO in the meantime.

On tuesday I'll let you know how it goes, I have my fingers crossed. Thanks again for all the help. :D
timpossible says: May 3, 2011. 7:19 PM
Hey Lincomatic, as said many times before, thank you for sharing this! This project was perfect for me, given my intermediate skill level. I successfully completed the project with each 'pixel' at 3" (opposed to 2"). For those curious, the final build including 3/16" thick foam core borders, was 25-3/4" square for me.

Using the Colors Shield on an Atmega 328 Duemilanove, I couldn't get RGBmtx to recognize the slave after loading ColorduinoSlave. But I was successful in communicating with it via Processing 1.5, running the RGBmtx sketch therein.

I'm looking for help in wiring up the music synchronization component. I'm somewhat confident in what I've configured up to the left of the TLC272CP op amp IC on the diagram. From that point forward (to the right of the TLC272CP op amp IC), I don't completely understand. Is there any way you could post a more detailed, perhaps top-view, of your synchronization board?

I'd be ever greatful! Thank you again for the great project!
lincomatic (author) says: May 3, 2011. 9:19 PM
timpossible,

Congratulations on getting it built! I'd love to see your build if you have photos of it.

Simply connect R1 between Pin 1 (output) of the TLC272CP and SDA on the Colorduino. Then connect C1 between SDA and ground. Make sure the + lead faces SDA.
burgergarnish says: Apr 20, 2011. 12:35 PM
Hello! This looks like a great project and I'd love to build it. But is it possible to do this with white led's and not use a color shield? I'd need to use some sort of interface for so many led's, correct? I'm a student and am learning!

Thank you so much.
pepehdez says: Apr 7, 2011. 12:08 PM
Hi lincomatic, another great project ! congratulations on it being featured on hackaday.

http://hackaday.com/2011/03/28/led-floor-lamp-really-ties-the-room-together/
lincomatic (author) says: Apr 8, 2011. 1:30 PM
cool!
oldestgeek says: Apr 1, 2011. 7:25 PM
WoW!...STUNNING! This is a GREAT project. There are so many possibilities. This project should win the contest for you, hands down! I think it is one of the coolest, doable projects i have seen in a very long time. Great Instructable!
gsilva says: Mar 29, 2011. 9:46 PM
I think that something like a spectrum analyzer would be a good improvement to the music synchronization mode (with your project conected to your pc) !!!
lincomatic (author) says: Mar 30, 2011. 8:15 AM
If you want to do that, it wouldn't be hard. You could interface it to Winamp to do the audio processing, or just and some FFT code to RGBmtx.
gsilva says: Mar 30, 2011. 2:57 PM
i will do something like this but first of all i need to buy a colorduino (sold out :( )!!
vader0ne says: Mar 27, 2011. 7:53 PM
Great project...I really liked the music on the last video.were did you get it?
lincomatic (author) says: Mar 27, 2011. 8:19 PM
Thanks, it's just free music supplied by youtube. They have this thing called AudioSwap, where you can just pick a soundtrack from their collection.
lincomatic (author) says: Mar 28, 2011. 8:36 AM
OK, just figured out which track it was:
Beckoning Shadows by Oliver Ledbury. Album: ANW1190 - Magic, Mystery. Label: Audio Network, Plc.
vader0ne says: Mar 28, 2011. 2:11 PM
Hey great I checked it out,I never hurd of this program in you tube. but great and thanks for the info..
Abysmal2 says: Mar 27, 2011. 1:10 PM
Lincomatic...

I just checked my RGB Led's and like your order they are Common Cathode.. Damn.. More on order ( Common Anode ) .. But what can I do to use the ones I have..

Can they be driven with transistors or something like that to invert the power??

If so what should I do.. I am using a color shield v1.1 and an uno..

Thanks..
lincomatic (author) says: Mar 27, 2011. 9:02 PM
The DM163 data sheet says the max output current , Iout = 60mA. What's unclear is if that's per channel or for the whole chip. It appears that it's per channel, because it also says the power dissipation is 1.36W, which is plenty. So the columns are probably OK. On the row side, you would need an inverter that can handle 480 ma per input.
lincomatic (author) says: Mar 27, 2011. 9:08 PM
I think you could use a uln2803a.
QuackMasterDan says: Mar 27, 2011. 1:00 PM
Thank you immensely, I have been wanting to get into more RGB microcontrolled projects for some time, and your guide shall be my next project. Well written, fairly detailed, clear photographs, and your providing links for all of the tools and software is greatly appreciated. Excellent job, you should be very proud of yourself, and thank you for sharing your creation with the world. I can't wait to put my own together now.
lincomatic (author) says: Mar 27, 2011. 8:16 PM
Thanks, I appreciate the feedback. Make sure to keep us updated on your own build.
Ragooman says: Mar 27, 2011. 12:11 PM
great project !
I like how you made the pixelated Leds with the foam board material. I was using cardboard myself. Nice way of mounting the LEDs into the foam.

One thing about the video, sometimes you see flicker in the video, is this an attribute of the video recording or the refresh rate by the arduino ?
lincomatic (author) says: Mar 27, 2011. 8:15 PM
It's just aliasing caused by my video camera. Unfortunately, I wasn't able to adjust the exposure. In person, it's flicker-free.
lekogm says: Mar 27, 2011. 9:35 AM
how possible is it to expand this. IE: if i wanted to do one that was 16x16 or 64x64, is that feasible with the colorduino?
lincomatic (author) says: Mar 27, 2011. 11:24 AM
the colorduinos can be controlled via I2C. You could hook a bunch of them up to an arduino, and have the arduino control them. I have some code that another developer sent me to do this, but I haven't had time to integrate it into my Colorduino Library yet.
dj-party says: Mar 26, 2011. 6:52 AM
Can you give some more details about the led´s "mcd"
lincomatic (author) says: Mar 26, 2011. 10:40 AM
I used these: http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&item=160539806009&ssPageName=STRK:MEWNX:IT#ht_2189wt_911
But I wouldn't trust their mcd numbers.. on eBay, the sellers tend to just put random numbers. They claim 4000-5000, but the mcd numbers tend to vary quite a bit between colors in the real world, and they don't specify for each color. Also, the relative intensities of my LED's varied so much that I couldn't even try to adjust the white balance ... so I wouldn't recommend the ones that I used.
ChicoWolf says: Mar 24, 2011. 8:09 AM
I want to build it!!!!!!!!!!!!!!!!!!!
scottinnh says: Mar 22, 2011. 8:05 AM
Bravo! Admittedly I would rather see a build-up of a standard duino to see some of the challenges, but since this is a permanent installation the the colorduino is more practical. This gets my vote.


Going past this, a couple of improvements come to mind re: untethering it:
A battery pack for the base (4 or 8 AA rechargables running through a 5v boost like a LT1302 mintyboost v2 will provide the 1A 5v). Two cheap AM radio transceivers (RF communication with the host PC) could carry the signals, although this depends if one can get away with 4800 baud and if not, what workarounds are suitable (ie, caching some of the shapes/frames on board).

I really like this and now it has me looking to use up some of these spare glass blocks I have...
Data643 says: Mar 23, 2011. 5:50 PM

Yes, instructions on an Arduino + Colors Shield version would be very helpful (and Cool!)

lincomatic (author) says: Mar 23, 2011. 9:09 PM
I don't have a Colors Shield to play with. All I know is from ITead's specs. The Colorduino is basically the same as an Arduino + Colors Shield. The only notable differences are:

1) Colorduino has no USB interface, so you have to use an external cable
2) You probably still have a couple of I/O pins left if you use the Colors Shield, while the Colorduino basically exposes no extra pins besides SDA/SCL.
lincomatic (author) says: Mar 22, 2011. 10:52 AM
Yes, I was going to build the controller from scratch at first, but then the Colorduino fell in my lap. Since the LED vendor screwed up and sent me 100 common cathode LED's at first, I will be designing some sort of controller for those in the future.

I bought a cheap bluetooth board on eBay for $11. That's going into it next. While the battery idea is nice, the LED's and circuit draw a lot of current, so that's why I decided to go w/ a wall plug.

Your glass block idea sounds cool! Make sure to document that somewhere when it's done.
scottinnh says: Mar 22, 2011. 11:25 AM
Cool.

I'd bet you could get a couple of hours off a 5V battery pack (Mintyboost). If you have a Kill-a-watt, it would show what this pulls in terms of 120V AC. I'm guessing it's under 4 watts.

Re Bluetooth, are you sure it will work at $11? That's about the price for a Bluetooth that expects a host computer, not something that will work with an Arduino. If you've tested it, please post an ebay link or part #. (I'm using 433MHz AM in a remote fermentation temp sensor, mainly due to cost. Bluetooth would be much nicer!)
lincomatic (author) says: Mar 22, 2011. 12:24 PM
yeah, it definitely will work. it has a full RFCOMM stack built in. my only problem is i haven't had time to work on a 3.3v level shifter yet. actually, it's 9.99, free shipping:
http://cgi.ebay.com/Wireless-Serial-Bluetooth-RF-Transceiver-Module-rs232-/260697768531?pt=LH_DefaultDomain_0&hash=item3cb2cc4253#ht_3755wt_1050
I've gotten it to pair w/ my computer, but haven't gotten the serial comm w/ the AVR working yet. It's very similar to a part sold by emartee.com. they have a breakout board, but it's no good because it doesn't handle level shifting properly. the vendor i bought it from has no data sheets at all (what do you expect for $10??)
axie1 says: Mar 24, 2011. 10:27 PM
I think it the same as our HC-06 here: http://iteadstudio.com/store/index.php?main_page=product_info&cPath=7&products_id=157
And more detailed about the AT command here: http://iteadstudio.com/produce/more-powerful-serial-port-bluetooth-module-masterslave/

kebmoore says: Mar 23, 2011. 9:04 AM
This is a great project and well documented. I have just gotten started with microcontrollers, and this is the sort of project that I want to build in the near future. I envision a scalable solution that would work for a desktop display about 8 inches square up to a wall-sized display on the scale of yours. Thanks for the inspiration!
lincomatic (author) says: Mar 23, 2011. 9:20 AM
cool, keep us posted on what you end up building!
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!