23
LED CUBE KIT INSTRUCTIONS 1. LED’s grid 2. Interface 3. Arduino code

4x4x4 Led Cube Kit Instructions

Embed Size (px)

DESCRIPTION

How to build a 3D LED Cube with an Arduino.Includes code, and layout instructions. Kits can be made or purchased.

Citation preview

Page 1: 4x4x4 Led Cube Kit Instructions

LED CUBE KIT INSTRUCTIONS

1. LED’s grid

2. Interface

3. Arduino code

Page 2: 4x4x4 Led Cube Kit Instructions

1. LED grid

First of all you will need to make a grid of LEDs. To make it easier, faster and better you will need to

make a grid. It is only holes in wood board like this: ( you need only one row with four holes)

Distances between holes are unlimited. You can choose your own distances between LEDs, but I

recommend you ~ 30 mm distances.

LED cube idea is that you can turn on each column and each layer to be able to control each LED light.

1st step : You need to connect all layers cathodes and all columns anodes.

So firstly bend all LEDs like this: (bend shorter wire)

After that solder all LEDs to rows:

Page 3: 4x4x4 Led Cube Kit Instructions

Then bend LED longer legs like this: (lower row)

2nd step: repeat 1st step 16 times.

3rd step: connect them to columns: (put them like you see in picture)

Then solder those two rows. Don’t forget to keep distance!

You need to get something like that:

Page 4: 4x4x4 Led Cube Kit Instructions

4th step: repeat 3rd step 12 times.

Now you have four 4x4 led matrix. You need to connect them layers :

In next photo you can see it done:

Page 5: 4x4x4 Led Cube Kit Instructions

5th step: put it to prototyping board if you want.

6th step: add wire to each level of LEDs to connect cathodes to ground:

You can see how it looks like there:

Page 6: 4x4x4 Led Cube Kit Instructions

2. INTERFACE

To control your cube you will need to make interface.

1st step: look good to schematics and try to imagine how it will be looking:

Page 7: 4x4x4 Led Cube Kit Instructions

If you don’t know how to read schematics:

1. You need to connect all wires which are called the same.

2. If there are more than 2 ports with same name you need to connect them all together.

2nd step: how to connect 74HC595. 74HC595 shift register is numerated like there: (almost all microchips are

numerated like that):

You have three 74HC595 chips so they pins will be numbered from 1 to 16 each and from 0 to 23 in a outputs.

Each chip have 8 outputs. Pins 1, 2, 3, 4, 5, 6, 7 and 15 are outputs on each 74hc595 shift register.

Output pins looks like that:

Page 8: 4x4x4 Led Cube Kit Instructions

Don’t make mistake there! Resistors in this photo are not in the right order as you need. Do everything by

following schematics.

3rd step: how to connect transistor:

Connect layers pins to Emitters

Connect 1k resistors to Bases

Connect Collectors to Ground (GND)

4th step: Soldering. Now you need to solder all parts to prototyping board. Connect everything as you see in

schematics on your prototyping board as you want. There are no rules how to put parts on prototyping board

there.

5th step: connect LED cube to LED cube interface. You need to connect it like showed on schematic:

LED cube pin Shift register pin No.

Layer 1 (Lowest layer) 0

Layer 2 1

Layer 3 2

Layer 4 (Highest layer) 3

Column 1 4

Page 9: 4x4x4 Led Cube Kit Instructions

Column 2 5

Column 3 6

Column 4 7

Column 5 8

Column 6 9

Column 7 10

Column 8 11

Column 9 12

Column 10 13

Column 11 14

Column 12 15

Column 13 16

Column 14 17

Column 15 18

Column 16 19

6th step: connect it to your microcontroller. Connect microcontroller pins with shift register pins like that:

Microcontroller pin Shift register pin

4 14

5 12

6 11

Page 10: 4x4x4 Led Cube Kit Instructions

3. ARDUINO CODE

This is the simplest code for programming LED cube. You can write your own code for animations. It is very

easy.

How to install your animations:

1. Write your code. Or install this one (Rewrite only green part of code. Other code must be leaved

same).

2. Upload code to your microcontroller.

3. ENJOY

How to write code? There are three main things to know before doing it:

First : setRegisterPin(9, HIGH); - choose pin number and what you want to do with him ( HIGH or LOW).

Second: writeRegisters(); - You need to write this after every single operation of animation.

Third: delay(200); - You need to write it when you want to delay next operation.

//CODE STARTS RIGHT THERE:

int SER_Pin = 4; //pin 14 on the 75HC595

int RCLK_Pin = 5; //pin 12 on the 75HC595

int SRCLK_Pin = 6; //pin 11 on the 75HC595

//How many of the shift registers - change this

#define number_of_74hc595s 3

//do not touch

#define numOfRegisterPins number_of_74hc595s * 8

boolean registers[numOfRegisterPins];

void setup(){

pinMode(SER_Pin, OUTPUT);

Page 11: 4x4x4 Led Cube Kit Instructions

pinMode(RCLK_Pin, OUTPUT);

pinMode(SRCLK_Pin, OUTPUT);

//reset all register pins

clearRegisters();

writeRegisters();

}

//set all register pins to LOW

void clearRegisters(){

for(int i = numOfRegisterPins - 1; i >= 0; i--){

registers[i] = LOW;

}

}

//Set and display registers

//Only call AFTER all values are set how you would like (slow otherwise)

void writeRegisters(){

digitalWrite(RCLK_Pin, LOW);

for(int i = numOfRegisterPins - 1; i >= 0; i--){

digitalWrite(SRCLK_Pin, LOW);

Page 12: 4x4x4 Led Cube Kit Instructions

int val = registers[i];

digitalWrite(SER_Pin, val);

digitalWrite(SRCLK_Pin, HIGH);

}

digitalWrite(RCLK_Pin, HIGH);

}

//set an individual pin HIGH or LOW

void setRegisterPin(int index, int value){

registers[index] = value;

}

void loop(){

//DEMO

setRegisterPin(0, LOW);

setRegisterPin(1, LOW);

setRegisterPin(2, LOW);

setRegisterPin(3, LOW);

setRegisterPin(4, LOW);

setRegisterPin(5, LOW);

setRegisterPin(6, LOW);

setRegisterPin(7, LOW);

Page 13: 4x4x4 Led Cube Kit Instructions

setRegisterPin(8, LOW);

setRegisterPin(9, LOW);

setRegisterPin(10, LOW);

setRegisterPin(11, LOW);

setRegisterPin(12, LOW);

setRegisterPin(13, LOW);

setRegisterPin(14, LOW);

setRegisterPin(15, LOW);

setRegisterPin(16, LOW);

setRegisterPin(17, LOW);

setRegisterPin(18, LOW);

setRegisterPin(19, LOW);

writeRegisters();

delay(0);

setRegisterPin(3, HIGH);

setRegisterPin(4, HIGH);

writeRegisters();

delay(200);

setRegisterPin(5, HIGH);

writeRegisters();

delay(200);

setRegisterPin(6, HIGH);

writeRegisters();

delay(200);

setRegisterPin(7, HIGH);

writeRegisters();

Page 14: 4x4x4 Led Cube Kit Instructions

delay(200);

setRegisterPin(11, HIGH);

writeRegisters();

delay(200);

setRegisterPin(15, HIGH);

writeRegisters();

delay(200);

setRegisterPin(19, HIGH);

writeRegisters();

delay(200);

setRegisterPin(18, HIGH);

writeRegisters();

delay(200);

setRegisterPin(17, HIGH);

writeRegisters();

delay(200);

setRegisterPin(16, HIGH);

writeRegisters();

delay(200);

setRegisterPin(12, HIGH);

writeRegisters();

delay(200);

setRegisterPin(8, HIGH);

writeRegisters();

delay(200);

setRegisterPin(9, HIGH);

writeRegisters();

Page 15: 4x4x4 Led Cube Kit Instructions

delay(200);

setRegisterPin(10, HIGH);

writeRegisters();

delay(200);

setRegisterPin(14, HIGH);

writeRegisters();

delay(200);

setRegisterPin(13, HIGH);

writeRegisters();

delay(200);

setRegisterPin(0, LOW);

setRegisterPin(1, LOW);

setRegisterPin(2, LOW);

setRegisterPin(3, LOW);

setRegisterPin(4, LOW);

setRegisterPin(5, LOW);

setRegisterPin(6, LOW);

setRegisterPin(7, LOW);

setRegisterPin(8, LOW);

setRegisterPin(9, LOW);

setRegisterPin(10, LOW);

setRegisterPin(11, LOW);

setRegisterPin(12, LOW);

setRegisterPin(13, LOW);

setRegisterPin(14, LOW);

setRegisterPin(15, LOW);

Page 16: 4x4x4 Led Cube Kit Instructions

setRegisterPin(16, LOW);

setRegisterPin(17, LOW);

setRegisterPin(18, LOW);

setRegisterPin(19, LOW);

writeRegisters();

delay(0);

setRegisterPin(2, HIGH);

setRegisterPin(4, HIGH);

writeRegisters();

delay(200);

setRegisterPin(5, HIGH);

writeRegisters();

delay(200);

setRegisterPin(6, HIGH);

writeRegisters();

delay(200);

setRegisterPin(7, HIGH);

writeRegisters();

delay(200);

setRegisterPin(11, HIGH);

writeRegisters();

delay(200);

setRegisterPin(15, HIGH);

writeRegisters();

delay(200);

setRegisterPin(19, HIGH);

Page 17: 4x4x4 Led Cube Kit Instructions

writeRegisters();

delay(200);

setRegisterPin(18, HIGH);

writeRegisters();

delay(200);

setRegisterPin(17, HIGH);

writeRegisters();

delay(200);

setRegisterPin(16, HIGH);

writeRegisters();

delay(200);

setRegisterPin(12, HIGH);

writeRegisters();

delay(200);

setRegisterPin(8, HIGH);

writeRegisters();

delay(200);

setRegisterPin(9, HIGH);

writeRegisters();

delay(200);

setRegisterPin(10, HIGH);

writeRegisters();

delay(200);

setRegisterPin(14, HIGH);

writeRegisters();

delay(200);

setRegisterPin(13, HIGH);

Page 18: 4x4x4 Led Cube Kit Instructions

writeRegisters();

delay(200);

setRegisterPin(0, LOW);

setRegisterPin(1, LOW);

setRegisterPin(2, LOW);

setRegisterPin(3, LOW);

setRegisterPin(4, LOW);

setRegisterPin(5, LOW);

setRegisterPin(6, LOW);

setRegisterPin(7, LOW);

setRegisterPin(8, LOW);

setRegisterPin(9, LOW);

setRegisterPin(10, LOW);

setRegisterPin(11, LOW);

setRegisterPin(12, LOW);

setRegisterPin(13, LOW);

setRegisterPin(14, LOW);

setRegisterPin(15, LOW);

setRegisterPin(16, LOW);

setRegisterPin(17, LOW);

setRegisterPin(18, LOW);

setRegisterPin(19, LOW);

writeRegisters();

delay(0);

setRegisterPin(1, HIGH);

Page 19: 4x4x4 Led Cube Kit Instructions

setRegisterPin(4, HIGH);

writeRegisters();

delay(200);

setRegisterPin(5, HIGH);

writeRegisters();

delay(200);

setRegisterPin(6, HIGH);

writeRegisters();

delay(200);

setRegisterPin(7, HIGH);

writeRegisters();

delay(200);

setRegisterPin(11, HIGH);

writeRegisters();

delay(200);

setRegisterPin(15, HIGH);

writeRegisters();

delay(200);

setRegisterPin(19, HIGH);

writeRegisters();

delay(200);

setRegisterPin(18, HIGH);

writeRegisters();

delay(200);

setRegisterPin(17, HIGH);

writeRegisters();

delay(200);

Page 20: 4x4x4 Led Cube Kit Instructions

setRegisterPin(16, HIGH);

writeRegisters();

delay(200);

setRegisterPin(12, HIGH);

writeRegisters();

delay(200);

setRegisterPin(8, HIGH);

writeRegisters();

delay(200);

setRegisterPin(9, HIGH);

writeRegisters();

delay(200);

setRegisterPin(10, HIGH);

writeRegisters();

delay(200);

setRegisterPin(14, HIGH);

writeRegisters();

delay(200);

setRegisterPin(13, HIGH);

writeRegisters();

delay(200);

setRegisterPin(0, LOW);

setRegisterPin(1, LOW);

setRegisterPin(2, LOW);

setRegisterPin(3, LOW);

setRegisterPin(4, LOW);

Page 21: 4x4x4 Led Cube Kit Instructions

setRegisterPin(5, LOW);

setRegisterPin(6, LOW);

setRegisterPin(7, LOW);

setRegisterPin(8, LOW);

setRegisterPin(9, LOW);

setRegisterPin(10, LOW);

setRegisterPin(11, LOW);

setRegisterPin(12, LOW);

setRegisterPin(13, LOW);

setRegisterPin(14, LOW);

setRegisterPin(15, LOW);

setRegisterPin(16, LOW);

setRegisterPin(17, LOW);

setRegisterPin(18, LOW);

setRegisterPin(19, LOW);

writeRegisters();

delay(0);

setRegisterPin(0, HIGH);

setRegisterPin(4, HIGH);

writeRegisters();

delay(200);

setRegisterPin(5, HIGH);

writeRegisters();

delay(200);

setRegisterPin(6, HIGH);

writeRegisters();

Page 22: 4x4x4 Led Cube Kit Instructions

delay(200);

setRegisterPin(7, HIGH);

writeRegisters();

delay(200);

setRegisterPin(11, HIGH);

writeRegisters();

delay(200);

setRegisterPin(15, HIGH);

writeRegisters();

delay(200);

setRegisterPin(19, HIGH);

writeRegisters();

delay(200);

setRegisterPin(18, HIGH);

writeRegisters();

delay(200);

setRegisterPin(17, HIGH);

writeRegisters();

delay(200);

setRegisterPin(16, HIGH);

writeRegisters();

delay(200);

setRegisterPin(12, HIGH);

writeRegisters();

delay(200);

setRegisterPin(8, HIGH);

writeRegisters();

Page 23: 4x4x4 Led Cube Kit Instructions

delay(200);

setRegisterPin(9, HIGH);

writeRegisters();

delay(200);

setRegisterPin(10, HIGH);

writeRegisters();

delay(200);

setRegisterPin(14, HIGH);

writeRegisters();

delay(200);

setRegisterPin(13, HIGH);

writeRegisters();

delay(200);

}