Rainbow Cube

In this box, you’ll find everything you need to build a ready to shine Rainbow Cube!
Have some fun and start creating a masterpiece today with this 4x4x4 RGB LED cube kit from Seeed Studio:
The “Rainbow Cube – Ready to Shine” requires no soldering and comes pre-assembled with a Rainbowduino (Arduino-compatible) LED driver controller. Just plug it in to your PC or Mac, grab a copy of the free design software, and you’ll discover just how easy it is to program this spectacular device and see the results in real time.
The Pack consist of:

Seeed Studio has made a video to show how to use Rainbow Cube and program to it. Watch the video, you'll know how cool this product is.

Here is the link in YouTobe: http://youtu.be/v44i73zmwA4

Great thanks to Riley Porter @Synthetos, for the excellent job of Acrylic Case design.

|


Rainbow Cube Kit (Assembled)

Rainbow Cube is a 3D RGB LED Cube useful for creating colorful design. The 3D Cube is artistically crafted with sixty-four 8mm RGB LEDs arranged in a 4 x 4 x 4 manner. Rainbow Cube can be used to create many beautiful visual effects with A Rainbowduino. The Rainbow Cube comes with an inbuilt 3.3V / 1 Amp LDO useful for powering the independently. A XBee compatible socket is provided as well, this can be used to connect Rainbowduino with a PC or an Arduino wirelessly.

Model: KIT101E1P

http://www.seeedstudio.com/depot/images/cubeani.gif


Features

Application Ideas

Schematic

Specification

Operating Voltage
LEDs

Pin definition and Rating

All pins are accessible from the Panel board show below.

Panel board (bottom view)



2 x 16 pin header connector



2 x 16 pin header connector


Mechanical Dimensions

Assembled cube is of approx. of 10cm (l) X 10cm (b) X 12cm (h) dimension.

Understanding the Schematic

To easily understand the working of Rainbow Cube, a very simplified schematic is presented below. In essence, 64 RGB LEDs are arranged in a form consisting of 8 common anodes(positive pins) and 8 common cathodes(gtound pins) for each color Red, Green and Blue.


Schematic in a 2D RGB LED Matrix form



RGB Cube from driver software view point



RGB Cube LED's 3D Positions illustrated


Rainbowduino v3.0

The Rainbowduino board is an Arduino compatible controller board with professional multiplexed LED driver. It can drive a 8x8 RGB Led Matrix or a 4x4x4 RGB LED Cube in common Anode mode. Rainbowduino v3.0 uses two MY9221 chips which is a 12-channels (R/G/B x 4) constant current Adaptive Pulse Density Modulation (APDM). Rainbowduino v3.0 has provisions for cascading more such boards with I2C interface.

Rainbowduino v3.0 is flashed with Arduino boot-loader and this makes it easy to program sketches using Arduino IDE. Unlike other LED drivers, this comes with a USB to UART (FT232RL) inbuilt for programming the sketches.

Rainbowduino v3.0
Rainbowduino v3.0 bottom

Features

Application Ideas

Specifications

Constant current output
20.8mA
Maximum LEDs driving capability
192 (i.e 8x8x3)

More information, please check the Rainbowduino v3.0 datasheet in wiki.

Power Adapter

High quality switching 'wall wart' AC to DC 6.5V 2A power supply. It has a DC jack connector suitable for for Rainbowduino. Also works well with Arduino / Seeeduino. It can function with 100-240VAC inputs.

Model:TOL113C3O

http://www.seeedstudio.com/depot/images/product/rainbowpower.jpg

Mini USB Cable

There is a 110cm Mini USB cable, with black color. It can be used to connect Rainbowduino V3.0 with your PC for programming.

Model:ARD112C5B

Usage

The case is made of Acrylic, to disassemble the box, please pay attention and follow the disassembling note:

The keys are not strong enough to withstand hard stretching. To disassemble the box, you should use your left hand to push the two legs and at the same time use your right hand to pull the key out. This is illustrated in the image below:

Hardware Installation


2x16 pin header positioning



A Rainbowduino properly connected to Rainbow Cube


Programming

Let us get started with a simple example:

/*
 Rainbowduino v3.0 Library examples:  Cube1
 
 Sets pixels on 3D plane (4x4x4 cube)
*/
 
#include <Rainbowduino.h>
 
void setup()
{
  Rb.init(); //initialize Rainbowduino driver
}
 
void loop()
{
  //Set (Z,X,Y):(0,0,0) pixel BLUE
  Rb.setPixelZXY(0,0,0,0x0000FF); //uses 24bit RGB color Code
 
  //Set (Z,X,Y):(0,3,0) pixel RED
  Rb.setPixelZXY(0,3,0,0xFF,0,0); //uses R, G and B color bytes
 
  //Set (Z,X,Y):(3,0,3) pixel GREEN
  Rb.setPixelZXY(3,0,3,0x00FF00); //uses 24bit RGB color Code
}
Output

Cube1.pde Demo


Application Programming Interfaces


In the above example, we have used few of the below APIs

init()

First we need to initialize the driver using init()

Usage:

Rb.init();//initialize Rainbowduino driver. This should be placed inside setup()

To set a LED in the 3D Cube we use the below two APIs.

setPixelZXY(Z,X,Y,R,G,B)

To set a LED (Z,X,Y) we use setPixelZXY(Z,X,Y,R,G,B).

Usage:

Rb.setPixelZXY(unsigned char x, unsigned char y, unsigned char  colorR,  unsigned char colorG, unsigned char colorB); //This sets the pixel (z,x,y) by specifying each channel(color) with a 8bit number.
setPixelZXY(Z,X,Y,24bRGB)

Alternatively a LED (Z,X,Y) can be set by using setPixelZXY(Z,X,Y,24bRGB).

Usage:

Rb.setPixelZXY(unsigned char z, unsigned char x, unsigned char y, uint32_t colorRGB /*24-bit RGB Color*/) //This sets the LED (z,x,y) by specifying a 24bit RGB color code
blankDisplay(void)

At times, it useful to blank all the LEDs. For this there is an API blankDisplay(void).

Usage:

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

Demos

setPixelZXY() Demo

/*
 Rainbowduino v3.0 Library examples:  Cube2
 
 Sets pixels on 3D plane (4x4x4 cube)
*/
 
#include <Rainbowduino.h>
 
void setup()
{
  Rb.init(); //initialize Rainbowduino driver
}
 
unsigned int z,x,y;
 
void loop()
{
  for(x=0;x<4;x++)
  {
    for(y=0;y<4;y++)
    {
     //Paint layer 0 Green
     Rb.setPixelZXY(0,x,y,0x00FF00); //uses 24bit RGB color Code
    }
  }  
 
  for(x=0;x<4;x++)
  {
    for(y=0;y<4;y++)
    {
     //Paint layer 3 Blue
     Rb.setPixelZXY(3,x,y,0x0000FF); //uses 24bit RGB color Code
    }
  }
}
Output


Cube2.pde Demo


setPixelZXY() Random Colors Demo

/*
 Rainbowduino v3.0 Library examples:  Cube3
 
 Sets pixels on 3D plane (4x4x4 cube)
*/
 
#include <Rainbowduino.h>
 
void setup()
{
  Rb.init(); //initialize Rainbowduino driver
}
 
unsigned int z,x,y;
 
void loop()
{
 for(z=0;z<4;z++)
 { 
  for(x=0;x<4;x++)
  {
    for(y=0;y<4;y++)
    {
     //Paint random colors
     Rb.setPixelZXY(z,x,y,random(0xFF),random(0xFF),random(0xFF)); //uses R, G and B color bytes
    }
  }
 }
delay(5000);
Rb.blankDisplay(); //Clear the LEDs (make all blank)
}
Output


Cube3.pde Demo


Night Lamp / Mood Lamp Demo

/*
 
 Rainbowduino v3.0 Library examples : Mood Lamp 
 
*/
 
#include <Rainbowduino.h>
 
 
// HSV to RGB array 
 
unsigned char RED[64] = {255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,238,221,204,188,171,154,137,119,102,85,
68,51,34,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,35,52};
 
unsigned char GREEN[64] = {0,17,34,51,68,85,102,119,136,153,170,187,204,221,238,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,238,221,204,188,170,154,136,120,102,86,68,52,34,18,0,0,0,0};
 
unsigned char BLUE[64] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,34,52,68,86,102,120,136,154,170,188,
204,221,238,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255};
 
void setup()
{
  Rb.init(); //initialize Rainbowduino driver
}
 
unsigned int z,x,y;
void loop()
{
 
for(z=0; z<64 ;z++)
{
 for(x=0;x<8;x++)
 {
    for(y=0;y<8;y++)
    {
     //Paint random colors
     //Rb.setPixelZXY(z,x,y,RED[i],GREEN[i],BLUE[i]); //uses R, G and B color bytes
     Rb.setPixelXY(x,y,RED[z],GREEN[z],BLUE[z]); //uses R, G and B color bytes
    }
 }
 delay(100);
}
 
for(z=63; z > 0 ;z--)
{
 for(x=0;x<8;x++)
 {
    for(y=0;y<8;y++)
    {
     //Paint random colors
     //Rb.setPixelZXY(z,x,y,RED[i],GREEN[i],BLUE[i]); //uses R, G and B color bytes
     Rb.setPixelXY(x,y,RED[z],GREEN[z],BLUE[z]); //uses R, G and B color bytes
    }
 }
 delay(100);
}
 
}
Output


[[Image:|thumb|none|400px| .pde Demo]]

Plasma Cube

/*
 
 Rainbowduino v3.0 Library examples : 3D Plasma
 
*/
 
#include <Rainbowduino.h>
 
// HSV to RGB array
 
unsigned char RED[64] = {255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,238,221,204,188,171,154,137,119,102,85,
68,51,34,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,35,52};
 
unsigned char GREEN[64] = {0,17,34,51,68,85,102,119,136,153,170,187,204,221,238,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,238,221,204,188,170,154,136,120,102,86,68,52,34,18,0,0,0,0};
 
unsigned char BLUE[64] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,34,52,68,86,102,120,136,154,170,188,
204,221,238,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255};
 
unsigned char plasma[4][4][4];
 
void setup()
{
  Rb.init(); //initialize Rainbowduino driver
 
  for(unsigned char x = 0; x < 4; x++)
  {
    for(unsigned char y = 0; y < 4; y++)
    {
      for(unsigned char z = 0; z < 4; z++)
       {
        int color = int(32.0 + (32.0 * sin(x / 1.0))+ 32.0 + (32.0 * sin(y / 1.0)) + 32.0 + (32.0 * sin(z / 1.0))) / 3;
        plasma[x][y][z] = color;      
       }   
    }
  }
}
 
unsigned char x,y,z,colorshift=0;
 
void loop()
{
for(x=0;x<4;x++)  
{
 for(y=0;y<4;y++)  
 {
  for(z=0;z<4;z++)
    {
     Rb.setPixelZXY(z,x,y,(RED[plasma[x][y][z] + colorshift]) % 256,(GREEN[plasma[x][y][z] + colorshift]) % 256,(BLUE[plasma[x][y][z] + colorshift]) % 256); //uses R, G and B color bytes
    }
 }
}
 delay(100);
 colorshift=  colorshift + 1;
}
Output


PlasmaCube.pde Demo


Third-party Demos

http://i.ytimg.com/vi/JXr-Jgzgigs/0.jpg

http://0.gvt0.com/vi/cC_xqA5irLA/0.jpg

Support

If you have questions or other better design ideas, you can go to our forum or wish to discuss.

Version Tracker

Revision Descriptions Release
v1.0 Initial public release

Resources

Related Projects

If you want to make some awesome projects by Rainbow Cube, here's some projects for reference.

Automatic Water Level Controller

The Rainbow Cubes do not have a standard for controlling them or chaining them together. You can look to change that.


I want to make it.



Share Your Awesome Projects with Us

Born with the spirit of making and sharing, that is what we believe makes a maker.

And only because of this , the open source community can be as prosperous as it is today.

It does not matter what you are and what you have made, hacker, maker, artist and engineers,

as long as you start sharing your works with others,

you are being part of the open source community and you are making your contributions .

Now share you awesome projects on with us on Recipe, and win a chance to become the Core User of Seeed.


Get more information about Core User please email to: recipe@seeed.cc



Copyright (c) 2008-2016 Seeed Development Limited (www.seeedstudio.com / www.seeed.cc)
This static html page was created from http://www.seeedstudio.com/wiki