Rainbowduino V3.0b Newbie

Grateful for some getting started help.

  1. It is not clear which way round my 8*8 LED Matrix plugs in. One way round I get a single red flashing LED near the middle of the panel. Is this the right way round?

  2. How do I get Ubuntu 11.10 to recognise the Driver USB. DMESG shows “unable to enumerate USB device on port 2”. I already have the Arduino IDE installed and my Arduino USB is recognised as ttyACM0.

  3. Will the Rainbowduino be able to power itself and the LED array from the USB.

Thanks, in eager expectation.

Welcome Newbie. I am also a newbie, but just a step or two ahead of you.

  1. It is not clear which way round my 8*8 LED Matrix plugs in. One way round I get a single red flashing LED near the middle of the panel. Is this the right way round?

If you do not change the default program for the Rainbowduino, then installing the matrix and powering it up will result in one of two things:
a. nothing visible, and no damage either
b. one red flashing pixel, your only indication that it is installed correctly.

When you get b., you could note the side of the matrix that faces the red/blue connectors (markings on bottom of the Rainbowduino) and mark it.

  1. How do I get Ubuntu 11.10 to recognise the Driver USB. DMESG shows “unable to enumerate USB device on port 2”. I already have the Arduino IDE installed and my Arduino USB is recognised as ttyACM0.

I use Windows, so this may be different for you. I find that the three Arduinos I use show up on COM4, COM5, and COM6. Each device consistently stays on whichever I first saw it. In the Arduino 1.0 IDE, you need to select the type of board. Duemilanovae with 328 works for my Rainbowduino.

For downloads to work, both settings must be correct, or else I will get a nastygram from someone called avrdude when the program tries to download from IDE to Rainbowduino.

I have no idea if any of this applies to you, but perhaps it will spur your ideas.

  1. Will the Rainbowduino be able to power itself and the LED array from the USB.

It does for me, and it should for you, though going through the math makes me wonder a bit.

USB spec says that it must supply a minimum of 0.5 Amp at 5 volts. The max constant current for LEDs, according to the Rainbowduino spec, is 20.8mA, and LEDs can run on 10-25mA (or even less). The matrix has 64 of them, but each one is like 3 LEDs because they are separate for R, G, and B, so 192 total. 0.020 Amp * 192 = 3.84, except that Rainbowduino uses WMD (oops, I mean PWM) to apply current to the LEDs one eighth of the time (12.5% duty cycle) but at a high enough frequency that it fools the eye into thinking that it is always on. 3.84 * .125 = 0.48 Amp.

This leaves only 20mA for the Arduino itself to operate, and that’s the part I wonder about. I have yet to find actual current requirements for an Arduino or the Rainbowduino; it is not included in the Specifications in seeedstudio.com/wiki/Rainbowduino_v3.0. But I can tell you that I have the RainbowCube (and have had the matrix) running off of the Rainbowduino when the latter was plugged in to USB, and it has been working fine.

I have a blog you might be interested in checking out; google on Colan Arduino and you should find it.

My 8x8 RGB Matrix has text (part number, etc) on one side. It works when the text side is the same as the Red/Blue side for Rainbowduino (see bottom of board).

For #2, try googling on the text. It may be unrelated to the Rainbowduino.

Thanks for the replies. As Colin says the Matrix has printing on the side that goes above the red&blue connections, but assuming that the printing might move I note that the Matrix housing has a small blip on that same side. Other sources that suggest looking for the square pin would not help with the Matrix version I have.

It is good to know that the red flashing is telling me that all is well and is not a danger symbol.

There is a small switch in the on the Rainbowduino pcb, just near to the USB connection. I learn from this site (sites.google.com/site/joetcochr … iteproject) that it the power bus switch and I see it is marked as USB and Host. However I have not noticed it having any effect as yet while I have the USB connected.

It would be good if a Linux user could give some guidance regarding the USB set-up as the Rainbowduino is not being acknowledged by my system. DMESG is giving me:

new full speed USB device number 30 using ohci_hcd [14754.412046] usb 7-2: device descriptor read/64, error -62 [14754.700075] usb 7-2: device descriptor read/64, error -62 [14754.980046] usb 7-2: new full speed USB device number 31 using ohci_hcd [14755.164043] usb 7-2: device descriptor read/64, error -62 [14755.452049] usb 7-2: device descriptor read/64, error -62 [14755.732041] usb 7-2: new full speed USB device number 32 using ohci_hcd [14756.140040] usb 7-2: device not accepting address 32, error -62 [14756.316061] usb 7-2: new full speed USB device number 33 using ohci_hcd [14756.724037] usb 7-2: device not accepting address 33, error -62 [14756.724070] hub 7-0:1.0: unable to enumerate USB device on port 2 [15706.708048] usb 7-2: new full speed USB device number 34 using ohci_hcd [15706.892051] usb 7-2: device descriptor read/64, error -62 [15707.180055] usb 7-2: device descriptor read/64, error -62 [15707.460079] usb 7-2: new full speed USB device number 35 using ohci_hcd [15707.644071] usb 7-2: device descriptor read/64, error -62 [15707.932051] usb 7-2: device descriptor read/64, error -62 [15708.212047] usb 7-2: new full speed USB device number 36 using ohci_hcd [15708.620032] usb 7-2: device not accepting address 36, error -62 [15708.796061] usb 7-2: new full speed USB device number 37 using ohci_hcd [15709.204042] usb 7-2: device not accepting address 37, error -62 [15709.204075] hub 7-0:1.0: unable to enumerate USB device on port 2

Not sure in that list exactly where the last USB connection starts because I have been plugging and unplugging pretty frequently.

As a newbie I need more basic information than I am finding so far regarding the functionality/role of the Rainbowduino driver and it’s ability to operate stand-alone. Because it has a USB and programming capability my assumption was that it was something like a constrained functionality Arduino. Now I have it in my hand I see it more as a pattern generator that needs to be controlled by a higher level device (eg Arduino) in which case how do you decide how to partition functionality between the two? Some worked/working examples would be useful. If it is always used with an Arduino and can be programmed via an Arduino why does it have a USB interface?

Under Resources on the Seeed site there are two downloads one for the Rainbowduino3.0_Library.zip and the other for the Rainbowduino_for_Arduino1.0.zip, which of these do I need and why?

Sorry about the lengthof this but I am just getting my mind into the right frame for these two products.

I would call it a specialized Arduino, rather than constrained. The key difference is that instead of offering data pins, it offers sockets into which the LED displays, such as your matrix unit, plug into directly. I suspect that the LED driver chips use most or all of the data pins, so there is little reason to expose them. Once the program is downloaded into the device, it is CAN be used stand-alone, for example using a wall-wart to power it and nothing else except the display.

It does NOT require an Arduino; it effectively IS an Arduino. The USB interface, similar to what you find on an Arduino (though a different shape), is used to connect to the host computer to download programs. Here are two use cases.

  1. You are generating simple patterns from an Arduino program. Once said program is downloaded, it is quite independent, and will work with only a wall wart and display. Working examples: any of the examples that are packaged with the library.

  2. You are creating patterns using floating point numbers and their functions which would not execute quickly enough, or would be too large, to be run on the on-board Arduino chip. In this case, you would create an Arduino program that reads commands from the serial interface. The commands would be oriented towards turning specified lights to specified colors, individually or potentially as blocks.

Then you would create a program that runs on Linux (etc) whose purpose is to send commands in the expected format to the device via USB. This program would be written to create patterns from more complex math.

A good approach would be for this host program to have one buffer for the current state of the Arduino-hosted display, and a second buffer for the new, desired state. That way, your program would operate on the buffer for desired state in one thread, and a separate thread would compare existing state to desired state, and on finding differences, generate the commands to the Rainbowduino to update the display, and also to update the buffer for current state as it goes.

  1. You COULD use a second Arduino (one that has a USB host interface) as a generator of patterns, as in #2 above, but it probably would not do much better than approach #1, especially if floating point is required.

I don’t work for Seeedstudio, so I can only make an educated guess.

Arduino 1.0 is a new release of the development environment, which is supplied by the official Arduino company in Italy (not Seeedstudio). I suspect that Rainbowduino3.0_Library.zip, which has files with dates from around October, was written against a pre-1.0 version of the Arduino dev env. Rainbowduino_for_Arduino1.0.zip has some of the same files, but a few minor mods, along with a readme explaining the key change:

Before Arduino 1.0, the main Arduino header file was called WProgram.h. You will find programs posted all over the place that still refer to it, since its release is recent, and a lot of posted code gets forgotten. Assuming you are using the Arduino 1.0 IDE release (which I recommend), you may need to make a change like this to programs that refer to WProgram.h to have them include the file by its new name, Arduino.h. If you don’t make this change, the compiler will give an error message and fail.

As for your Linux problem, I suggest once again that you search for the text of the message. I did that and found discussions where this came up in other situations, and they may lead you to a solution that applies to yours.

I found an alternate Rainbowduino wiki that has some useful basic info at http://www.trochotron.com/w/index.php?title=Rainbowduino. In particular, there is a Rainbowduino Manual v1.1 at http://www.seeedstudio.com/depot/images/product/Rainbowduino_Manualv1.1.pdf that, though it is from 2009 and is not up to date with the v3.0b version of Rainbowduino, provides useful clues to puzzles I have been dealing with, such as the purpose of extra parts included with my 4x4x4 Rainbowduino cube that don’t fit Rainbowduino or the cube.

In the discussion of power options, it provides some discussion of the slide switch, without fully describing which position it should be in. I am GUESSING here that it should be in USB position when you power your Rainbowduino and display via USB. The other position is probably used when a wall wart is being used to power the Rainbowduino. Insert the usual legalese here that I cannot be responsible for your equipment if I am wrong about this.

Mark thank you for your input. I don’t know how you found the manual on the Seeed site because I could not get to it (except via your link) even knowing from your post that it was there. I could really do with the manual for V3.0b.

It would be useful if someone from Seeed could add some comment regarding the Newbie experience because in my view it is not good. Documentation is spread all over the place and is hard to find. Much of it is not compatible with the device I have or is lacking - for example the section on this site http://www.seeedstudio.com/wiki/Rainbowduino_v3.0 titled “Using with RGB LED Matrix” is blank.

I want to use the Rainbowduino to create an interactive modern lamp for a customer commission and I selected Arduino compatible on the basis of the claim that Arduino is “intended for artists, designers, hobbyists, and anyone interested in creating interactive objects or environments.” However I am not naive and I do not expect power service for a $25 component.

A first step would be getting one or the other of my computers to recognise the device on a USB port. My Arduino is recognised so it would be good to know just for a start whether or not the two boards have the same USB interface or where the differences are. So far I have swapped ports, cables and computers (all Linux though different versions) as well as play around with access permissions. Could someone from Seeed respond or am I on the wrong forum? Searching the error via Google does not help because it is littered with unsolved posts and lucky fixes. :confused:

I found that manual in the trochotron site, googling for any kind of info on these products. I agree that it would be very helpful if they created a version with a similar scope for the current version. Arduino is very much of a DIY experience, and there isn’t a lot of hand-holding for newbies, though some of it may be indicative of the number of people using this product - I would say not a lot.

I have posted a few problems that I am looking for help with and also have received no answers.

No responses yet from the company, and I see others complaining. I have contacted Seeed direct and also the vendor I bought the part from. Perhaps it is a public holiday in China.

Hey Folks – 'nother newbie looking for company. I run Win XP and my raindowduino was recognized ok. I’m working on the programming aspect now. I have not been using .pde files or the Arduino IDE up to now. I been using Programmers Notepad, c files, a makefile & AVRdude for compilation and a USB programmer from Tuxgraphic.org. I’m trying to figure out how to compile the firmware and example program becuase in my experience they must be compiled and downloaded to the raindowduino at the same time. Does this sound reasonable to ya’ll? Regrads – Bob G in Baton Rouge.

Hi there,
For the USB Driver,
if you can,you can try this commend to your linux:“lsusb” before you plug in the usb cable and after you plug in the usb cable.
catch the picture and post to here.
Thank you.