4x4x4 RGB Cube not working

Hello,

Bought and built this: robotshop.com/en/programmabl … e-kit.html

I am a newbie and would appreciate some help:

  1. In Arduino IDE, which Board should I select for the Rainbowduino? I am able to upload sketches using Arduino Pro & Duemilanove but have no idea if the uploaded code is actually valid. I am uploading this: robotshop.com/content/softwa … Plasma.zip

  2. After uploading code and connecting the cube to the 9V power source. The only lights that light up are the Rainbowduino status lights. Everything else is dead. See picture: dropbox.com/s/jcurngz9y7idv … D-CUBE.jpg Please let me know what troubleshooting steps I could take to see where I went wrong.

Thank you,

Ray

Hi Ray,

Welcome to our Forums!

According to the manufacturer’s site, Duemilanove w/ ATmega328 is in fact the correct board type for upload.

Last time we checked, the Matrix Plasma code was correct, but it’s possible there was a hardware change that means the code needs to be modified. However, more often not, most of the problems with the 4x4x4 cube is due to an assembly/soldering error. We would recommend reviewing the instructions and ensuring that the parts have all the correct orientations and that the solder points all look good.

If everything looks fine, the manufacturer has more information on their wiki, including a new library and some sample code to go with it:

We hope this helps and please let us know if you have other questions or what you did to solve the problem.

Best regards,

Ok, thanks.

Visually, everything seems to be correct and soldered together. But it doesn’t work, so I am using a multimeter to check for things.

When powered via the 9V adapter, the PCB status lights (RSSI & ASSOC) measure 2.2V each. All RGB lights don’t measure anything significant (.1-.2V, plugged in to power or not). Is there anything I can tell from this?

Also, are the RSSI & ASSOC status LEDs controlled by the Arduino?

Thanks,

Ray

Are you sure all the right bridges are soldered ?

I believe so.

Please take a look at these pics of my cube: dropbox.com/sh/zi47uuv5v5a7 … ybRmzQTy3a

Actually, I am also working on a Peggy board as well and while following their instructions, I realized that I need to import the Library using Arduino IDE, not just open the file. Now the cube lights up, however, only half of it does. See picture: dropbox.com/s/k3zdcg382d9eq … 01_024.jpg

What should I check?

Glad to see you got it working now. If some of the LEDs are turning on while others are not (and you didn’t make any changes to the sample code), then there must be a problem with some of the connections made during assembly…

So I found that I overdid the soldering and melted away the metal plating on a part of the PCB connection (I can see the tan, if you will, part of the PCB) - marked here: dropbox.com/s/3zj1q2opdlfhd … 20copy.jpg

Is there any chance I could make contact with the damaged end or do I need a whole new kit to replace that layer?

I know need to fix that problem but I am not sure if it is that problem that was causing half of the cube not to light up. I tried looking at the schematic (seeedstudio.com/wiki/images/d/dc … _board.pdf) but I couldn’t interpret the meaning. Is it possible to tell some scenarios where a faulty connection could cause half of the cube to not work?

Thanks,

Ray

There should be a way of repairing the solder connection. If you don’t have enough of the solder pad left, you could also run a small wire from that joint to another solder pad on the same trace wire. If the schematic doesn’t give enough information, you could use a multimeter in continuity mode (or ohm/resistance mode) to find which pad has a resistance of 0 ohm relative to the original pad.

It’s hard to tell without knowing which wire in the schematic is affected by the broken solder, but I have the impression that the break is only affecting one 4x4 plane of the cube, and that there might be a similar solder problem that is responsible for the other row that does not work. We would recommend fixing this solder joint first and trying the cube again to see the results. If there’s still a 4x4 plane that’s not working, then you can look for a second broken solder…

Hope this helps,

hello so i’m bringing this thread out of the dark ages… but my roommate bought me a rainbowduino 4x4x4 cube “fully assembled” for Christmas i have everything working (all drivers/port) the cube receives the sketches from the examples on the arduino IDE rainbowduino library (right now its displaying level 0 green level 3 blue) but when i try to upload your code the cube takes it but does nothing. is there something i am not doing correctly? also my rainbowduino is a version 3.0b could that be an issue? and i have absolutely no programming experience (could be another issue). my roommate got this for me to try and learn how to program it but there are no good write-ups on how to understand any of the code thank you in advance and sorry about horrible grammar/punctuation…

Is it a RobotShop product? If so, can you provide the product code(s) for the parts, and also where you obtained the sample code? Have you powered it correctly?

I don’t think so it says seedstudio it and I pulled the sample code from an instruct a blessing article wrote by Carlito he showed the exact same cube how to to build it and provided a zip file with code and a lot update rainbowduino.h

instructables.com/id/Carlito … Mood-Cube/

Here is the link to his write up

Try this video: youtube.com/watch?v=v44i73z … e=youtu.be

Yeah I’ve seen it… my cube works great but all their examples work like crap… I was hoping to use your guys code and try to learn what it’s doing…

There’s actually quite a bit of sample RGB cube online which is compatible, as well as user-generated code.
Take a look at the code itself to try to make specific lights turn specific colors (start from scratch).

thank you for the advice i’ve been scouring through a bunch of posts and doing alot of internet research
and i’ve managed to get some working code. my problem is i think i’m using way to many delays because
i cant get a for statement to work to repeat this section of code then move on. i will put the code down
below sorry its a bit big.

also is there a way to shrink this? or is this pretty much the only way to program this thing mind you i’m
very novice with programming all together. so please bare with me lol

code is as follows:


// rainbowduino v3.0 library 

#include <Rainbowduino.h>

void setup(){
 
 Rb.init(); //initialize Rainbowduino driver
}


unsigned int z,x,y;

void loop(){

 
   Rb.blankDisplay(); //Clear the LEDs (make all blank) for start up


//first layer four center leds

   {
 Rb.setPixelZXY(0,2,2,0x0415FF);
   }
   

 {
 Rb.setPixelZXY(0,2,1,0x0415FF);
   }
   

 {
 Rb.setPixelZXY(0,1,1,0x0415FF);
   }
   

 {
 Rb.setPixelZXY(0,1,2,0x0415FF);
   }

   delay(100);
   
   // second layer four center leds

   {
 Rb.setPixelZXY(1,2,2,0x0415FF);
   }
   

 {
 Rb.setPixelZXY(1,2,1,0x0415FF);
   }
   

 {
 Rb.setPixelZXY(1,1,1,0x0415FF);
   }
   

 {
 Rb.setPixelZXY(1,1,2,0x0415FF);
   }
   
 delay(100);

 // third layer four center leds

   {
 Rb.setPixelZXY(2,2,2,0x0415FF);
   }
   

 {
 Rb.setPixelZXY(2,2,1,0x0415FF);
   }
   

 {
 Rb.setPixelZXY(2,1,1,0x0415FF);
   }
   

 {
 Rb.setPixelZXY(2,1,2,0x0415FF);
   }
   
 delay(100);
 
 // four layer four center leds

   {
 Rb.setPixelZXY(3,2,2,0x0415FF);
   }
   

 {
 Rb.setPixelZXY(3,2,1,0x0415FF);
   }
   

 {
 Rb.setPixelZXY(3,1,1,0x0415FF);
   }
   

 {
 Rb.setPixelZXY(3,1,2,0x0415FF);
   }
   
 delay(100);
 /* okay so now the fun begins of lighting
  *  the outside leds to simulate water fall-
  *  ing to the ground
  */
 //layer 4 outside leds

   {
 Rb.setPixelZXY(3,0,0,0xFF06C6);
   }

   {
 Rb.setPixelZXY(3,1,0,0xFF06C6);
   }

   {
 Rb.setPixelZXY(3,2,0,0xFF06C6);
   }

   {
 Rb.setPixelZXY(3,3,0,0xFF06C6);
   }
   
   {
 Rb.setPixelZXY(3,3,1,0xFF06C6);
   }

   {
 Rb.setPixelZXY(3,3,2,0xFF06C6);
   }

   {
 Rb.setPixelZXY(3,3,3,0xFF06C6);
   }
   
   {
 Rb.setPixelZXY(3,2,3,0xFF06C6);
   }
   
   {
 Rb.setPixelZXY(3,1,3,0xFF06C6);
   }
   
   {
 Rb.setPixelZXY(3,0,3,0xFF06C6);
   }
   
   {
 Rb.setPixelZXY(3,0,2,0xFF06C6);
   }
   
   {
 Rb.setPixelZXY(3,0,1,0xFF06C6);
   }

 delay(100);
 
 //layer 3 outside leds

   {
 Rb.setPixelZXY(2,0,0,0xFF06C6);
   }

   {
 Rb.setPixelZXY(2,1,0,0xFF06C6);
   }

   {
 Rb.setPixelZXY(2,2,0,0xFF06C6);
   }

   {
 Rb.setPixelZXY(2,3,0,0xFF06C6);
   }
   
   {
 Rb.setPixelZXY(2,3,1,0xFF06C6);
   }

   {
 Rb.setPixelZXY(2,3,2,0xFF06C6);
   }

   {
 Rb.setPixelZXY(2,3,3,0xFF06C6);
   }
   
   {
 Rb.setPixelZXY(2,2,3,0xFF06C6);
   }
   
   {
 Rb.setPixelZXY(2,1,3,0xFF06C6);
   }
   
   {
 Rb.setPixelZXY(2,0,3,0xFF06C6);
   }
   
   {
 Rb.setPixelZXY(2,0,2,0xFF06C6);
   }
   
   {
 Rb.setPixelZXY(2,0,1,0xFF06C6);
   }
   
   delay(100);

   // now we have the kill layer one of the center leds

//first layer four center leds off with no color code

   {
 Rb.setPixelZXY(0,2,2,0x000000);
   }
   

 {
 Rb.setPixelZXY(0,2,1,0x000000);
   }
   

 {
 Rb.setPixelZXY(0,1,1,0x000000);
   }
   

 {
 Rb.setPixelZXY(0,1,2,0x000000);
   }

   delay(100);

    
 //layer 2 outside leds

   {
 Rb.setPixelZXY(1,0,0,0xFF06C6);
   }

   {
 Rb.setPixelZXY(1,1,0,0xFF06C6);
   }

   {
 Rb.setPixelZXY(1,2,0,0xFF06C6);
   }

   {
 Rb.setPixelZXY(1,3,0,0xFF06C6);
   }
   
   {
 Rb.setPixelZXY(1,3,1,0xFF06C6);
   }

   {
 Rb.setPixelZXY(1,3,2,0xFF06C6);
   }

   {
 Rb.setPixelZXY(1,3,3,0xFF06C6);
   }
   
   {
 Rb.setPixelZXY(1,2,3,0xFF06C6);
   }
   
   {
 Rb.setPixelZXY(1,1,3,0xFF06C6);
   }
   
   {
 Rb.setPixelZXY(1,0,3,0xFF06C6);
   }
   
   {
 Rb.setPixelZXY(1,0,2,0xFF06C6);
   }
   
   {
 Rb.setPixelZXY(1,0,1,0xFF06C6);
   }
   
   delay(100);

   
//second layer four center leds off with no color code

   {
 Rb.setPixelZXY(1,2,2,0x000000);
   }
   

 {
 Rb.setPixelZXY(1,2,1,0x000000);
   }
   

 {
 Rb.setPixelZXY(1,1,1,0x000000);
   }
   

 {
 Rb.setPixelZXY(1,1,2,0x000000);
   }

   delay(100);

// now we light layer two then we will kill the inside of layer two


 //layer 1 outside leds

   {
 Rb.setPixelZXY(0,0,0,0xFF06C6);
   }

   {
 Rb.setPixelZXY(0,1,0,0xFF06C6);
   }

   {
 Rb.setPixelZXY(0,2,0,0xFF06C6);
   }

   {
 Rb.setPixelZXY(0,3,0,0xFF06C6);
   }
   
   {
 Rb.setPixelZXY(0,3,1,0xFF06C6);
   }

   {
 Rb.setPixelZXY(0,3,2,0xFF06C6);
   }

   {
 Rb.setPixelZXY(0,3,3,0xFF06C6);
   }
   
   {
 Rb.setPixelZXY(0,2,3,0xFF06C6);
   }
   
   {
 Rb.setPixelZXY(0,1,3,0xFF06C6);
   }
   
   {
 Rb.setPixelZXY(0,0,3,0xFF06C6);
   }
   
   {
 Rb.setPixelZXY(0,0,2,0xFF06C6);
   }
   
   {
 Rb.setPixelZXY(0,0,1,0xFF06C6);
   }
   
   delay(100);

   
   
//third layer four center leds off with no color code

   {
 Rb.setPixelZXY(2,2,2,0x000000);
   }
   

 {
 Rb.setPixelZXY(2,2,1,0x000000);
   }
   

 {
 Rb.setPixelZXY(2,1,1,0x000000);
   }
   

 {
 Rb.setPixelZXY(2,1,2,0x000000);
   }

   delay(100);

   
//fourth layer four center leds off with no color code

   {
 Rb.setPixelZXY(3,2,2,0x000000);
   }
   

 {
 Rb.setPixelZXY(3,2,1,0x000000);
   }
   

 {
 Rb.setPixelZXY(3,1,1,0x000000);
   }
   

 {
 Rb.setPixelZXY(3,1,2,0x000000);
   }

   delay(100);

//layer 4 outside leds

   {
 Rb.setPixelZXY(3,0,0,0x000000);
   }

   {
 Rb.setPixelZXY(3,1,0,0x000000);
   }

   {
 Rb.setPixelZXY(3,2,0,0x000000);
   }

   {
 Rb.setPixelZXY(3,3,0,0x000000);
   }
   
   {
 Rb.setPixelZXY(3,3,1,0x000000);
   }

   {
 Rb.setPixelZXY(3,3,2,0x000000);
   }

   {
 Rb.setPixelZXY(3,3,3,0x000000);
   }
   
   {
 Rb.setPixelZXY(3,2,3,0x000000);
   }
   
   {
 Rb.setPixelZXY(3,1,3,0x000000);
   }
   
   {
 Rb.setPixelZXY(3,0,3,0x000000);
   }
   
   {
 Rb.setPixelZXY(3,0,2,0x000000);
   }
   
   {
 Rb.setPixelZXY(3,0,1,0x000000);
   }

 delay(100);

 //layer 3 outside leds

   {
 Rb.setPixelZXY(2,0,0,0x000000);
   }

   {
 Rb.setPixelZXY(2,1,0,0x000000);
   }

   {
 Rb.setPixelZXY(2,2,0,0x000000);
   }

   {
 Rb.setPixelZXY(2,3,0,0x000000);
   }
   
   {
 Rb.setPixelZXY(2,3,1,0x000000);
   }

   {
 Rb.setPixelZXY(2,3,2,0x000000);
   }

   {
 Rb.setPixelZXY(2,3,3,0x000000);
   }
   
   {
 Rb.setPixelZXY(2,2,3,0x000000);
   }
   
   {
 Rb.setPixelZXY(2,1,3,0x000000);
   }
   
   {
 Rb.setPixelZXY(2,0,3,0x000000);
   }
   
   {
 Rb.setPixelZXY(2,0,2,0x000000);
   }
   
   {
 Rb.setPixelZXY(2,0,1,0x000000);
   }
   
   delay(100);

   


 //layer 2 outside leds

   {
 Rb.setPixelZXY(1,0,0,0x000000);
   }

   {
 Rb.setPixelZXY(1,1,0,0x000000);
   }

   {
 Rb.setPixelZXY(1,2,0,0x000000);
   }

   {
 Rb.setPixelZXY(1,3,0,0x000000);
   }
   
   {
 Rb.setPixelZXY(1,3,1,0x000000);
   }

   {
 Rb.setPixelZXY(1,3,2,0x000000);
   }

   {
 Rb.setPixelZXY(1,3,3,0x000000);
   }
   
   {
 Rb.setPixelZXY(1,2,3,0x000000);
   }
   
   {
 Rb.setPixelZXY(1,1,3,0x000000);
   }
   
   {
 Rb.setPixelZXY(1,0,3,0x000000);
   }
   
   {
 Rb.setPixelZXY(1,0,2,0x000000);
   }
   
   {
 Rb.setPixelZXY(1,0,1,0x000000);
   }
   
   delay(100);
 
 //layer 1 outside leds

   {
 Rb.setPixelZXY(0,0,0,0x000000);
   }

   {
 Rb.setPixelZXY(0,1,0,0x000000);
   }

   {
 Rb.setPixelZXY(0,2,0,0x000000);
   }

   {
 Rb.setPixelZXY(0,3,0,0x000000);
   }
   
   {
 Rb.setPixelZXY(0,3,1,0x000000);
   }

   {
 Rb.setPixelZXY(0,3,2,0x000000);
   }

   {
 Rb.setPixelZXY(0,3,3,0x000000);
   }
   
   {
 Rb.setPixelZXY(0,2,3,0x000000);
   }
   
   {
 Rb.setPixelZXY(0,1,3,0x000000);
   }
   
   {
 Rb.setPixelZXY(0,0,3,0x000000);
   }
   
   {
 Rb.setPixelZXY(0,0,2,0x000000);
   }
   
   {
 Rb.setPixelZXY(0,0,1,0x000000);
   }
   
 delay(100);

Unfortunately we are not in a position to troubleshoot / optimize code - perhaps someone from the community can offer some insight. You might also consider posting on the Arduino forum under “Programming”. It sounds like you are interested in getting involved in robotics / programming - going straight to an RGB LED matrix is not the easiest thing in the world (and unnecessarily complex for a beginner). You might have the most fun learning using a starter kit: robotshop.com/en/arduino-kits.html