This instructable will cover the building process of an 4x4x4 LED Cube. I will be using an Arduino to control the LEDs. Since the Arduino (Freeduino) has a total of 20 pins (including the analog pins) we will not need to have any multiplexing or shift registers. I will take you though what i did in order to build the cube and create some designs of your own.
Remove these ads by
Signing UpStep 1Bill of Materials
For this project I used the freeduino Arduino. Because the Freeduino has a total of 20 I/O pins (with using the analog pins) we will not need and multiplexing or shift registers. So all we will need for our project is:
1. LED x 64
2. Resistors x 16
3. Arduino x 1
4. Perforated PCB
5. Soldering Iron
6. Drill (for the jig)
7. Piece of wood (for a jig)
Vendors:
I have found sparkfun.com and digikey.com to be good suppliers of small electronic components in general and are currently the only two that I have purchased anything from.
| « Previous Step | Download PDFView All Steps | Next Step » |


















































Where do I connect the the layer's negative control wires to? (the black wires)
Note: Im very new to arduino
and here is my result
http://youtu.be/VWYiD5FnHZc
http://www.youtube.com/watch?v=lVW64nfY2PE
I used forte1994 arduino's program
Much appreciated :)
----Back----
3 7 11 15
2 6 10 14
1 5 9 13
0 4 8 12
-----Front----
Yeah this was my first tutorial and i realized that I did not explain the connections very well.
On the freeduino i was using use the digital outputs for 0-15 and the analog next. So analog 0 corresponds to column 14 and analog 1 corresponds to column 15. Analog 2-5 will be the negative or ground for the 4 layers.
If you need anything else let me know.
Can you please explain how you write some letters in your 4x4x4 Cube?
Thank you.
Great project, congratulations!
http://www.youtube.com/watch?v=fXeoowp5JtE
I hope Google Translate is accurate :)
Mi cubo se abusa .... que se estrelló por un amigo borracho y una mochila! Fui capaz de casi lo doble de nuevo cuando lo pongo en el caso.
My leds will just blink as random and not in order when I use the code. 'Cause I wired them up just randomly. Which ports should I be using?
There is something I do wrong, but I don't know what. Please help!
----Back----
3 7 11 15
2 6 10 14
1 5 9 13
0 4 8 12
-----Front----
I may just do the 556 for my cube. I only plan on having a couple of groups of LEDs in mine turn on and off, so a 556 (i.e. two 555s) should do the trick. That said, I do plan on buying an Arduino in the future, as they are very robust for what you can do with them.
Your instructions have been very helpful. Probably the best I've come across so far. Thanks!
Thanks for the complements i am glad to hear it helped!
This was my first Arduino project. I built this cube because I like the idea of using just the 20 digital pins, LEDs and a few resisters. Everyone at home and work likes this project and want to see what I can get it to do next. I used Paden's original code on this page to test my cube with excellent results on the first try. Here is the first sketch I was able to make funtion myself.
/* 4x4x4 LED Cube
Chase around outside edge, counter clockwise, top to bottom.
By VoodooVw
*/
// Initalize our LED columns (positive)
int LEDPin[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
// Initalize the LED layers (ground)
int LayerPin[] = {16,17,18,19};
// Initalize the outside columns counter clockwise
int OuterEdge[] = {0,1,2,3,7,11,15,14,13,12,8,4};
// The Setup
void setup(){
// Set up LED columns as output and off
for(int pin = 0; pin < 16 ; pin++ ){
pinMode(LEDPin[pin],OUTPUT);
digitalWrite(LEDPin[pin],LOW);}
// Set up LED Layers as output and off
for(int layer = 0; layer < 4; layer++){
pinMode(LayerPin[layer], OUTPUT);
digitalWrite(LayerPin[layer], HIGH);}}
// Loop to chase around outside edge, counter clockwise, top to bottom
void loop(){
// Setup increment through layers loop
for(int layer = 0; layer < 4; layer++){
// Setup increment through outer edge loop
for(int pin = 0; pin < 12 ; pin++)
// Turn on LEDs starting from first column, top layer
{digitalWrite(OuterEdge[pin],HIGH);
digitalWrite(LayerPin[layer],LOW);
// Keep LED on for this time
delay(60);
// Turn off current lit LED then loop up to light next edge LED
digitalWrite(OuterEdge[pin],LOW);}
// Once all LEDs have been lit loop all the way up to increment layer
digitalWrite(LayerPin[layer],HIGH);}}
thanks for the help cant wait to get started
Hope that helps if you have any more questions feel free to ask! I could always post another image if that would help.