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 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 |
All pins are accessible from the Panel board show below.
Assembled cube is of approx. of 10cm (l) X 10cm (b) X 12cm (h) dimension.
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.
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.
More information, please check the Rainbowduino v3.0 datasheet in wiki.
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
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
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:
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 }
In the above example, we have used few of the below APIs
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.
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.
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
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)
/* 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 } } }
/* 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) }
/* 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); } }
[[Image:|thumb|none|400px| .pde Demo]]
/* 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; }
http://i.ytimg.com/vi/JXr-Jgzgigs/0.jpg
http://0.gvt0.com/vi/cC_xqA5irLA/0.jpg
If you have questions or other better design ideas, you can go to our forum or wish to discuss.
Revision | Descriptions | Release |
---|---|---|
v1.0 | Initial public release |
If you want to make some awesome projects by Rainbow Cube, here's some projects for reference.
The Rainbow Cubes do not have a standard for controlling them or chaining them together. You can look to change that.
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