# 8x8x8 led cube question

Ive looked at EVERY guide I can find on how to make them and none that use the arduino give hardly ANY description on how to build one using a arduino. I want to start by making a 5x5x5 then moving up. But am at a total loss on what I need and how to do it.. I want to do the 5x5x5 as my first project. Any help is REALLY appreciated.

A Google search for '8x8x8 LED cube Arduino' turned up these instructions:

It doesnt show how to make it at all though. Like the controller board and it looked as thought those parts were outdated..from what I read..

The chips are still available: http://netsemi.com/p-93126-led-driver-ic-a6276ea-t.aspx

The instructions provide a schematic for the driver board showing connections to each of the Arduino pins.

The easy way to think about it is that you have 8 shift registers, with each output connected to the anode of an LED. So you have 64 LEDs. Connect all the cathodes to a current sink. Output a 1/0 pattern into the shift register, turn on the cathode sink. There's layer 1.

Now, add 7 more LEDs to each output, with the cathodes connected together like layer. Now you have layers 2-8.

So write out a 1/0 pattern, turn cathode drive 1 on/off.
Write out a 1/0 pattern, turn cathode drive 2 on/off.
Repeat for layers 3,4,5,6,7,8.

Physically, have the Anodes go vertically so layers 1-8 are stacked up.
Have the cathodes connected horizontally with 1 wire going down to the cathode driver.

If you have enough pins (Mega) then you don't even need shift registers - 64 outputs to drive the anodes high/low with current limit resistor. 8 outputs to drive an NPN transistor or N-channel MOSFET rated for (64 x 20mA max) 1.28A minimum (I would go at least 2A) each for each layer.

Make sense?

I'm building an 8x8x8 cube at the moment on the arduino and there is MANY ways to go about it.
LED drivers are the best for an 8x8x8 you can use 4 16bit LED drivers. Where all the drives light the 64 LEDS and then you can either use 8 output pins on the arduino as your grounds or hook up a shiftregister with some npn transistors and use that register to switch between your grounds.

Esentially with ANY cube you NEVER have more then one layer on at a time. The trick is switching all the layers fast enough it seems like every layer is lit up to the human eye. The concept is simple in a way but the programming of animations can be a pain with arduino not doing to well with 3D arrays and things like that

Well one. I dont know how to read schematics hardly at all.

Two. Honestly. No It made no sense to me. Im new to this stuff.

Three. Ive only heard of the led drivers. I actually have no idea what they are.

Four. I have an Arduino UNO. Think that might be useful info.

So if you are so new that none of it makes sense then the project is too difficult for you at this time.
Do a few of the tutorials first, learn about code, do some modifications and tweeks and feel more comfortable with the whole environment. Then come back in a month or two and see if the instructions make more sense. An 8X8X8 cube is a very large project and it too big for you now.
However there is no reason why you should not have it as an ambition.

I bet you haven’t been here…
http://www.mushroo.me/home/voxel-shield/voxel-shield-overview

Some code I wrote for individual xyz LED control.

``````// Shift Register pin assignments
int dataPin     = 2;
int clockPin    = 3;
int latchPin    = 5;
int masterClear = 4;

void led(int x,int y,int z,int hold){
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000001 << z);
if(y == 7){
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000001 << x);
} else {
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000000);
}
if(y == 6){
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000001 << x);
} else {
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000000);
}
if(y == 5){
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000001 << x);
} else {
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000000);
}
if(y == 4){
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000001 << x);
} else {
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000000);
}
if(y == 3){
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000001 << x);
} else {
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000000);
}
if(y == 2){
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000001 << x);
} else {
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000000);
}
if(y == 1){
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000001 << x);
} else {
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000000);
}
if(y == 0){
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000001 << x);
} else {
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000000);
}
digitalWrite(latchPin, HIGH);
delay(hold);
}

void clean(int hold){
digitalWrite(latchPin, LOW);
for(int x = 0;x < 10;x++){
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000000);
}
digitalWrite(latchPin, HIGH);
delay(hold);
}

void setup() {
// Setup the pin modes
pinMode(dataPin,     OUTPUT);
pinMode(clockPin,    OUTPUT);
pinMode(latchPin,    OUTPUT);
pinMode(masterClear, OUTPUT);

// Clear the shift registers
digitalWrite(masterClear, LOW);
delay(10);
digitalWrite(masterClear, HIGH);
}

void loop() {
//  x,y,z,delay
led(0,0,0,100); //top left, bottom layer
led(1,0,0,100); //top +1 left
led(2,0,0,100); //top +2 left
led(3,0,0,100); //top +3 left
led(4,0,0,100); //top +4 left
led(5,0,0,100); //top +5 left
led(6,0,0,100); //top +6 left
led(7,0,0,100); //top +7 left
//   delay
clean(100);
}
``````

I’m currently building my cube, here is some thumbnails:

I’m currently building my cube, here is some thumbnails:

Looks awesome! Keep up the good work, I want to see that project when it’s ready & documented.

lRaHl:
I bet you haven’t been here…
http://www.mushroo.me/home/voxel-shield/voxel-shield-overview

Some code I wrote for individual xyz LED control.

``````// Shift Register pin assignments
``````

int dataPin     = 2;
int clockPin    = 3;
int latchPin    = 5;
int masterClear = 4;

void led(int x,int y,int z,int hold){
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000001 << z);
if(y == 7){
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000001 << x);
} else {
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000000);
}
if(y == 6){
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000001 << x);
} else {
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000000);
}
if(y == 5){
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000001 << x);
} else {
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000000);
}
if(y == 4){
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000001 << x);
} else {
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000000);
}
if(y == 3){
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000001 << x);
} else {
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000000);
}
if(y == 2){
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000001 << x);
} else {
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000000);
}
if(y == 1){
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000001 << x);
} else {
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000000);
}
if(y == 0){
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000001 << x);
} else {
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000000);
}
digitalWrite(latchPin, HIGH);
delay(hold);
}

void clean(int hold){
digitalWrite(latchPin, LOW);
for(int x = 0;x < 10;x++){
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000000);
}
digitalWrite(latchPin, HIGH);
delay(hold);
}

void setup() {
// Setup the pin modes
pinMode(dataPin,     OUTPUT);
pinMode(clockPin,    OUTPUT);
pinMode(latchPin,    OUTPUT);
pinMode(masterClear, OUTPUT);

// Clear the shift registers
digitalWrite(masterClear, LOW);
delay(10);
digitalWrite(masterClear, HIGH);
}

void loop() {
//  x,y,z,delay
led(0,0,0,100); //top left, bottom layer
led(1,0,0,100); //top +1 left
led(2,0,0,100); //top +2 left
led(3,0,0,100); //top +3 left
led(4,0,0,100); //top +4 left
led(5,0,0,100); //top +5 left
led(6,0,0,100); //top +6 left
led(7,0,0,100); //top +7 left
//   delay
clean(100);
}

``````

I'm currently building my cube, here is some thumbnails:
![](http://filesmelt.com/dl/IMAG004811.jpg)![](http://filesmelt.com/dl/IMAG00506.jpg)![](http://filesmelt.com/dl/IMAG00517.jpg)![](http://filesmelt.com/dl/IMAG00526.jpg)![](http://filesmelt.com/dl/IMAG00556.jpg)![](http://filesmelt.com/dl/IMAG00586.jpg)![](http://filesmelt.com/dl/IMAG00566.jpg)![](http://filesmelt.com/dl/IMAG00597.jpg)![](http://filesmelt.com/dl/IMAG00608.jpg)![](http://filesmelt.com/dl/IMAG00616.jpg)![](http://filesmelt.com/dl/IMAG006512.jpg)![](http://filesmelt.com/dl/IMAG00673.jpg)![](http://filesmelt.com/dl/IMAG00687.jpg)
``````

Ok see this is what I was looking for. I dont know how to make the boards. I can make the cube. But I cant code, and I dont know what I need for ONLY arduino running the cube. what parts. and it seems that you do. I also dont know what to hook to the arduino, but that board looks intresting although again quite vague on what it needs for this specific project. it says youy MAY need this… or you MAY need that… etc… I would love some input on how your going about it.

First im building a 3x3x3 and a 4x4x4 so I have some time to figure this out