Статьи

LED cube 3x3x3

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(), они позволяют зажигать как отдельные диагонали, так и слои и также отдельные светодиоды.


Удачных совершений!



Нет комментариев

Добавить комментарий