Академический Документы
Профессиональный Документы
Культура Документы
1. LEDs grid
2. Interface
3. Arduino code
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)
2. INTERFACE
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:
Dont 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:
Column 2
Column 3
Column 4
Column 5
Column 6
Column 7
Column 8
Column 9
Column 10
Column 11
Column 12
Column 13
Column 14
Column 15
Column 16
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
6th step: connect it to your microcontroller. Connect microcontroller pins with shift register pins like that:
Microcontroller pin
4
5
6
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();
Third:
delay(200);
boolean registers[numOfRegisterPins];
void setup(){
pinMode(SER_Pin, OUTPUT);
pinMode(RCLK_Pin, OUTPUT);
pinMode(SRCLK_Pin, OUTPUT);
digitalWrite(RCLK_Pin, LOW);
digitalWrite(SER_Pin, val);
digitalWrite(SRCLK_Pin, HIGH);
}
digitalWrite(RCLK_Pin, HIGH);
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);
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();
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();
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);
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);
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);
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);
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);
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);
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();
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();
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);
}