LED cube 3x3x3
Накопилось необходимое количество светодиодов (27 штук) и решил поиграться с LED кубом.
Все составляющие для проекта:
1. 27 светодиодов (9 зеленых, 9 желтых, 9 красных)
2. 3 полевых транзистора КП504
3. arduino uno
4. некоторое количество резисторов
Все в сборе
И видео работы и некоторых эффектов:
Еще видео:
Скетч для управления LED кубом:
/*
Скетч для LED куба 3х3х3
Первое знакомство
*/
int layer[3] = {11,12,13}; //слои куба, 13-нижний,12-средний,11-верхний
int column[9] = {2,3,4,5,6,7,8,9,10}; /*столбы куба, первый крайний правый,
далее счет влево,2 и 3-крайний левый*/
int val1;
int val2;
void setup(){
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
val1 = 8;
val2 = 25;
}
void loop(){
sloi(2,1,0,6);
delay(val2);
sloi(1,2,0,3);
delay(val2);
sloi(0,2,1,0);
delay(val2);
sloi(2,1,0,3);
delay(val2);
sloi(1,2,0,3);
delay(val2);
sloi(0,2,1,3);
delay(val2);
sloi(2,1,0,0);
delay(val2);
sloi(1,2,0,3);
delay(val2);
sloi(0,2,1,6);
delay(val2);
sloi(1,2,0,6);
delay(val2);
sloi(1,2,0,3);
delay(val2);
sloi(1,2,0,0);
delay(val2);
delay(500);
sloi(2,1,0,7);
delay(val2);
sloi(1,2,0,4);
delay(val2);
sloi(0,2,1,1);
delay(val2);
sloi(2,1,0,4);
delay(val2);
sloi(1,2,0,4);
delay(val2);
sloi(0,2,1,4);
delay(val2);
sloi(2,1,0,1);
delay(val2);
sloi(1,2,0,4);
delay(val2);
sloi(0,2,1,7);
delay(val2);
sloi(1,2,0,7);
delay(val2);
sloi(1,2,0,4);
delay(val2);
sloi(1,2,0,1);
delay(val2);
delay(500);
sloi(2,1,0,8);
delay(val2);
sloi(1,2,0,5);
delay(val2);
sloi(0,2,1,2);
delay(val2);
sloi(2,1,0,5);
delay(val2);
sloi(1,2,0,5);
delay(val2);
sloi(0,2,1,5);
delay(val2);
sloi(2,1,0,2);
delay(val2);
sloi(1,2,0,5);
delay(val2);
sloi(0,2,1,8);
delay(val2);
sloi(1,2,0,2);
delay(val2);
sloi(1,2,0,5);
delay(val2);
sloi(1,2,0,8);
delay(500);
}
void diagonal(int a,int b,int c){ //a-номер led наверху,b-номер led в середине,c-нижний led
digitalWrite(layer[0],HIGH);
digitalWrite(layer[1],LOW);
digitalWrite(layer[2],LOW);
digitalWrite(column[a],HIGH);
delay(val1);
digitalWrite(layer[0],HIGH);
digitalWrite(layer[1],LOW);
digitalWrite(layer[2],LOW);
digitalWrite(column[a],LOW);
delay(val1);
digitalWrite(layer[1],HIGH);
digitalWrite(layer[0],LOW);
digitalWrite(layer[2],LOW);
digitalWrite(column[b],HIGH);
delay(val1);
digitalWrite(layer[1],HIGH);
digitalWrite(layer[0],LOW);
digitalWrite(layer[2],LOW);
digitalWrite(column[b],LOW);
delay(val1);
digitalWrite(layer[2],HIGH);
digitalWrite(layer[1],LOW);
digitalWrite(layer[0],LOW);
digitalWrite(column[c],HIGH);
delay(val1);
digitalWrite(layer[2],HIGH);
digitalWrite(layer[1],LOW);
digitalWrite(layer[0],LOW);
digitalWrite(column[c],LOW);
delay(val1);
}
void sloi(int a,int b,int c, int d){ //a-рабочий слой,b-выкл слой,c-выкл слой,d-номер светодиода
digitalWrite(layer[a],HIGH);
digitalWrite(layer[b],LOW);
digitalWrite(layer[c],LOW);
digitalWrite(column[d],HIGH);
delay(val1);
digitalWrite(layer[a],HIGH);
digitalWrite(layer[b],LOW);
digitalWrite(layer[c],LOW);
digitalWrite(column[d],LOW);
delay(val1);
}
Создал две функции diagоnal() и sloi(), они позволяют зажигать как отдельные диагонали, так и слои и также отдельные светодиоды.
Удачных совершений!