Pages: [1]   Go Down
Author Topic: 8x8x8 led cube question  (Read 2343 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 15
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Massachusetts, USA
Offline Offline
Tesla Member
***
Karma: 203
Posts: 8719
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

http://www.instructables.com/id/How-to-build-an-8x8x8-LED-cube-and-control-it-with/
Logged

Send Bitcoin tips to: 1L3CTDoTgrXNA5WyF77uWqt4gUdye9mezN
Send Litecoin tips to : LVtpaq6JgJAZwvnVq3ftVeHafWkcpmuR1e

Offline Offline
Newbie
*
Karma: 0
Posts: 15
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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..
Logged

Massachusetts, USA
Offline Offline
Tesla Member
***
Karma: 203
Posts: 8719
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Send Bitcoin tips to: 1L3CTDoTgrXNA5WyF77uWqt4gUdye9mezN
Send Litecoin tips to : LVtpaq6JgJAZwvnVq3ftVeHafWkcpmuR1e

Global Moderator
Boston area, metrowest
Offline Offline
Brattain Member
*****
Karma: 525
Posts: 26554
Author of "Arduino for Teens". Available for Design & Build services. Now with Unlimited Eagle board sizes!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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?
Logged

Designing & building electrical circuits for over 25 years. Check out the ATMega1284P based Bobuino and other '328P & '1284P creations & offerings at  www.crossroadsfencing.com/BobuinoRev17.
Arduino for Teens available at Amazon.com.

Offline Offline
Newbie
*
Karma: 0
Posts: 22
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 15
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Manchester (England England)
Offline Offline
Brattain Member
*****
Karma: 604
Posts: 33432
Solder is electric glue
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Lake Mary, FL
Offline Offline
Jr. Member
**
Karma: 0
Posts: 50
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Code:
// 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:


« Last Edit: November 10, 2011, 02:45:08 am by lRaHl » Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 34
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
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.  smiley
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 15
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Code:
// 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:





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.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 15
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Pages: [1]   Go Up
Jump to: