Помощь по коду. Led колонна 4х4х8
- Войдите на сайт для отправки комментариев
Здравствуйте всем. Собрал я значит, так назовем, "светодиодную колонну" тот-же самый led куб, только наростил сверху еще четыре слоя и вышла колонна.
Подредактировал исходный код под свои нужды:
//initializing and declaring led rows
int column[16]={13,12,11,10,9,8,7,6,5,4,3,2,50,51,52,53};
//initializing and declaring led layers
int layer[8]={A7,A6,A5,A4,A3,A2,A1,A0};
int time = 250;
void setup()
{
//setting rows to ouput
for(int i = 0; i<16; i++)
{
pinMode(column[i], OUTPUT);
}
//setting layers to output
for(int i = 0; i<8; i++)
{
pinMode(layer[i], OUTPUT);
}
//seeding random for random pattern
randomSeed(analogRead(10));
}
//xxxxxxxxxxxxxxxxxxxxFUNCTION LOOPxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
void loop()
{
turnEverythingOff();//turn all off
flickerOn();
turnEverythingOn();//turn all on
delay(time);
turnOnAndOffAllByLayerUpAndDownNotTimed();
layerstompUpAndDown();
turnOnAndOffAllByColumnSideways();
delay(time);
aroundEdgeDown();
turnEverythingOff();
randomflicker();
randomRain();
diagonalRectangle();
goThroughAllLedsOneAtATime();
propeller();
spiralInAndOut();
flickerOff();
turnEverythingOff();
delay(2000);
}
//xxxxxxxxxxxxxxxxxxxxFUNCTIONSxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
///////////////////////////////////////////////////////////turn all off
void turnEverythingOff()
{
for(int i = 0; i<16; i++)
{
digitalWrite(column[i], 1);
}
for(int i = 0; i<8; i++)
{
digitalWrite(layer[i], 0);
}
}
////////////////////////////////////////////////////////////turn all on
void turnEverythingOn()
{
for(int i = 0; i<16; i++)
{
digitalWrite(column[i], 0);
}
//turning on layers
for(int i = 0; i<8; i++)
{
digitalWrite(layer[i], 1);
}
}
///////////////////////////////////////////////////////turn columns off
void turnColumnsOff()
{
for(int i = 0; i<16; i++)
{
digitalWrite(column[i], 1);
}
}
/////////////////////////////////////////////////////////////flicker on
void flickerOn()
{
int i = 150;
while(i != 0)
{
turnEverythingOn();
delay(i);
turnEverythingOff();
delay(i);
i-= 5;
}
}
//////////////turn everything on and off by layer up and down NOT TIMED
void turnOnAndOffAllByLayerUpAndDownNotTimed()
{
int x = 75;
for(int i = 5; i != 0; i--)
{
turnEverythingOn();
for(int i = 8; i!=0; i--)
{
digitalWrite(layer[i-1], 0);
delay(x);
}
for(int i = 0; i<8; i++)
{
digitalWrite(layer[i], 1);
delay(x);
}
for(int i = 0; i<8; i++)
{
digitalWrite(layer[i], 0);
delay(x);
}
for(int i = 8; i!=0; i--)
{
digitalWrite(layer[i-1], 1);
delay(x);
}
}
}
//////////////////////////turn everything on and off by column sideways
void turnOnAndOffAllByColumnSideways()
{
int x = 85;
turnEverythingOff();
//turn on layers
for(int i = 0; i<8; i++)
{digitalWrite(layer[i], 1);}
for(int y = 0; y<5; y++)
{
//turn on 0-3
for(int i = 0; i<8; i++)
{digitalWrite(column[i], 0);
delay(x);}
//turn on 4-7
for(int i = 4; i<8; i++)
{digitalWrite(column[i], 0);
delay(0);}
//turn on 8-11
for(int i = 8; i<12; i++)
{digitalWrite(column[i], 0);
delay(x);}
//turn on 12-15
for(int i = 12; i<16; i++)
{digitalWrite(column[i], 0);
delay(x);}
//turn off 0-3
for(int i = 0; i<4; i++)
{digitalWrite(column[i], 1);
delay(x);}
//turn off 4-7
for(int i = 4; i<8; i++)
{digitalWrite(column[i], 1);
delay(x);}
//turn off 8-11
for(int i = 8; i<12; i++)
{digitalWrite(column[i], 1);
delay(x);}
//turn off 12-15
for(int i = 12; i<16; i++)
{digitalWrite(column[i], 1);
delay(x);}
//turn on 12-15
for(int i = 12; i<16; i++)
{digitalWrite(column[i], 0);
delay(x);}
//turn on 8-11
for(int i = 8; i<12; i++)
{digitalWrite(column[i], 0);
delay(x);}
//turn on 4-7
for(int i = 4; i<8; i++)
{digitalWrite(column[i], 0);
delay(x);}
//turn on 0-3
for(int i = 0; i<4; i++)
{digitalWrite(column[i], 0);
delay(x);}
//turn off 12-15
for(int i = 12; i<16; i++)
{digitalWrite(column[i], 1);
delay(x);}
//turn off 8-11
for(int i = 8; i<12; i++)
{digitalWrite(column[i], 1);
delay(x);}
//turn off 4-7
for(int i = 4; i<8; i++)
{digitalWrite(column[i], 1);
delay(x);}
//turn off 0-3
for(int i = 0; i<4; i++)
{digitalWrite(column[i], 1);
delay(x);}
}
}
/////////////////////////////////////////up and down single layer stomp
void layerstompUpAndDown()
{
int x = 75;
for(int i = 0; i<8; i++)
{
digitalWrite(layer[i], 0);
}
for(int y = 0; y<5; y++)
{
for(int count = 0; count<1; count++)
{
for(int i = 0; i<8; i++)
{
digitalWrite(layer[i], 1);
delay(x);
digitalWrite(layer[i], 0);
}
for(int i = 8; i !=0; i--)
{
digitalWrite(layer[i-1], 1);
delay(x);
digitalWrite(layer[i-1], 0);
}
}
for(int i = 0; i<8; i++)
{
digitalWrite(layer[i], 1);
delay(x);
}
for(int i = 8; i!=0; i--)
{
digitalWrite(layer[i-1], 0);
delay(x);
}
}
}
////////////////////////////////////////////////////////////flicker off
void flickerOff()
{
turnEverythingOn();
for(int i = 0; i!= 150; i+=5)
{
turnEverythingOff();
delay(i+50);
turnEverythingOn();
delay(i);
}
}
///////////////////////////////////////////around edge of the cube down
void aroundEdgeDown()
{
for(int x = 200; x != 0; x -=50)
{
turnEverythingOff();
for(int i = 8; i != 0; i--)
{
digitalWrite(layer[i-1], 1);
digitalWrite(column[5], 0);
digitalWrite(column[6], 0);
digitalWrite(column[9], 0);
digitalWrite(column[10], 0);
digitalWrite(column[0], 0);
delay(x);
digitalWrite(column[0], 1);
digitalWrite(column[4], 0);
delay(x);
digitalWrite(column[4], 1);
digitalWrite(column[8], 0);
delay(x);
digitalWrite(column[8], 1);
digitalWrite(column[12], 0);
delay(x);
digitalWrite(column[12], 1);
digitalWrite(column[13], 0);
delay(x);
digitalWrite(column[13], 1);
digitalWrite(column[14], 0);
delay(x);
digitalWrite(column[14], 1);
digitalWrite(column[15], 0);
delay(x);
digitalWrite(column[15], 1);
digitalWrite(column[11], 0);
delay(x);
digitalWrite(column[11], 1);
digitalWrite(column[7], 0);
delay(x);
digitalWrite(column[7], 1);
digitalWrite(column[3], 0);
delay(x);
digitalWrite(column[3], 1);
digitalWrite(column[2], 0);
delay(x);
digitalWrite(column[2], 1);
digitalWrite(column[1], 0);
delay(x);
digitalWrite(column[1], 1);
}
}
}
/////////////////////////////////////////////////////////random flicker
void randomflicker()
{
turnEverythingOff();
int x = 30;
for(int i = 0; i !=750; i+=2)
{
int randomLayer = random(0,8);
int randomColumn = random(0,16);
digitalWrite(layer[randomLayer], 1);
digitalWrite(column[randomColumn], 0);
delay(x);
digitalWrite(layer[randomLayer], 0);
digitalWrite(column[randomColumn], 1);
delay(x);
}
}
////////////////////////////////////////////////////////////random rain
void randomRain()
{
turnEverythingOff();
int x = 60;
for(int i = 0; i!=60; i+=2)
{
int randomColumn = random(0,16);
digitalWrite(column[randomColumn], 0);
digitalWrite(layer[7], 1);
delay(x);
digitalWrite(layer[7], 0);
digitalWrite(layer[6], 1);
delay(x);
digitalWrite(layer[6], 0);
digitalWrite(layer[5], 1);
delay(x);
digitalWrite(layer[5], 0);
digitalWrite(layer[4], 1);
delay(x);
digitalWrite(layer[4], 0);
digitalWrite(layer[3], 1);
delay(x);
digitalWrite(layer[3], 0);
digitalWrite(layer[2], 1);
delay(x);
digitalWrite(layer[2], 0);
digitalWrite(layer[1], 1);
delay(x);
digitalWrite(layer[1], 0);
digitalWrite(layer[0], 1);
delay(x);
digitalWrite(layer[0], 0);
digitalWrite(column[randomColumn], 1);
}
}
/////////////////////////////////////////////////////diagonal rectangle
void diagonalRectangle()
{
int x = 350;
turnEverythingOff();
for(int count = 0; count<5; count++)
{
//top left
for(int i = 0; i<8; i++)
{digitalWrite(column[i], 0);}
digitalWrite(layer[3], 1);
digitalWrite(layer[2], 1);
delay(x);
turnEverythingOff();
//middle middle
for(int i = 4; i<12; i++)
{digitalWrite(column[i], 0);}
digitalWrite(layer[1], 1);
digitalWrite(layer[2], 1);
delay(x);
turnEverythingOff();
//bottom right
for(int i = 8; i<16; i++)
{digitalWrite(column[i], 0);}
digitalWrite(layer[0], 1);
digitalWrite(layer[1], 1);
delay(x);
turnEverythingOff();
//bottom middle
for(int i = 4; i<12; i++)
{digitalWrite(column[i], 0);}
digitalWrite(layer[0], 1);
digitalWrite(layer[1], 1);
delay(x);
turnEverythingOff();
//bottom left
for(int i = 0; i<8; i++)
{digitalWrite(column[i], 0);}
digitalWrite(layer[0], 1);
digitalWrite(layer[1], 1);
delay(x);
turnEverythingOff();
//middle middle
for(int i = 4; i<12; i++)
{digitalWrite(column[i], 0);}
digitalWrite(layer[1], 1);
digitalWrite(layer[2], 1);
delay(x);
turnEverythingOff();
//top right
for(int i = 8; i<16; i++)
{digitalWrite(column[i], 0);}
digitalWrite(layer[2], 1);
digitalWrite(layer[3], 1);
delay(x);
turnEverythingOff();
for(int i = 4; i<12; i++)
{digitalWrite(column[i], 0);}
digitalWrite(layer[3], 1);
digitalWrite(layer[4], 1);
delay(x);
turnEverythingOff();
for(int i = 0; i<8; i++)
{digitalWrite(column[i], 0);}
digitalWrite(layer[4], 1);
digitalWrite(layer[5], 1);
delay(x);
turnEverythingOff();
for(int i = 4; i<12; i++)
{digitalWrite(column[i], 0);}
digitalWrite(layer[5], 1);
digitalWrite(layer[6], 1);
delay(x);
turnEverythingOff();
for(int i = 8; i<16; i++)
{digitalWrite(column[i], 0);}
digitalWrite(layer[6], 1);
digitalWrite(layer[7], 1);
delay(x);
turnEverythingOff();
for(int i = 4; i<12; i++)
{digitalWrite(column[i], 0);}
digitalWrite(layer[6], 1);
digitalWrite(layer[7], 1);
delay(x);
turnEverythingOff();
for(int i = 0; i<8; i++)
{digitalWrite(column[i], 0);}
digitalWrite(layer[6], 1);
digitalWrite(layer[7], 1);
delay(x);
turnEverythingOff();
for(int i = 4; i<12; i++)
{digitalWrite(column[i], 0);}
digitalWrite(layer[5], 1);
digitalWrite(layer[6], 1);
delay(x);
turnEverythingOff();
for(int i = 8; i<16; i++)
{digitalWrite(column[i], 0);}
digitalWrite(layer[4], 1);
digitalWrite(layer[5], 1);
delay(x);
turnEverythingOff();
for(int i = 4; i<12; i++)
{digitalWrite(column[i], 0);}
digitalWrite(layer[3], 1);
digitalWrite(layer[4], 1);
delay(x);
turnEverythingOff();
}
//top left
for(int i = 0; i<8; i++)
{digitalWrite(column[i], 0);}
digitalWrite(layer[3], 1);
digitalWrite(layer[2], 1);
delay(x);
turnEverythingOff();
}
//////////////////////////////////////////////////////////////propeller
void propeller()
{
turnEverythingOff();
int x = 90;
for(int y = 8; y>0; y--)
{
for(int i = 0; i<6; i++)
{
//turn on layer
digitalWrite(layer[y-1], 1);
//a1
turnColumnsOff();
digitalWrite(column[0], 0);
digitalWrite(column[5], 0);
digitalWrite(column[10], 0);
digitalWrite(column[15], 0);
delay(x);
//b1
turnColumnsOff();
digitalWrite(column[4], 0);
digitalWrite(column[5], 0);
digitalWrite(column[10], 0);
digitalWrite(column[11], 0);
delay(x);
//c1
turnColumnsOff();
digitalWrite(column[6], 0);
digitalWrite(column[7], 0);
digitalWrite(column[8], 0);
digitalWrite(column[9], 0);
delay(x);
//d1
turnColumnsOff();
digitalWrite(column[3], 0);
digitalWrite(column[6], 0);
digitalWrite(column[9], 0);
digitalWrite(column[12], 0);
delay(x);
//d2
turnColumnsOff();
digitalWrite(column[2], 0);
digitalWrite(column[6], 0);
digitalWrite(column[9], 0);
digitalWrite(column[13], 0);
delay(x);
//d3
turnColumnsOff();
digitalWrite(column[1], 0);
digitalWrite(column[5], 0);
digitalWrite(column[10], 0);
digitalWrite(column[14], 0);
delay(x);
}
}
//d4
turnColumnsOff();
digitalWrite(column[0], 0);
digitalWrite(column[5], 0);
digitalWrite(column[10], 0);
digitalWrite(column[15], 0);
delay(x);
}
//////////////////////////////////////////////////////spiral in and out
void spiralInAndOut()
{
turnEverythingOn();
int x = 60;
for(int i = 0; i<6; i++)
{
//spiral in clockwise
digitalWrite(column[0], 1);
delay(x);
digitalWrite(column[1], 1);
delay(x);
digitalWrite(column[2], 1);
delay(x);
digitalWrite(column[3], 1);
delay(x);
digitalWrite(column[7], 1);
delay(x);
digitalWrite(column[11], 1);
delay(x);
digitalWrite(column[15], 1);
delay(x);
digitalWrite(column[14], 1);
delay(x);
digitalWrite(column[13], 1);
delay(x);
digitalWrite(column[12], 1);
delay(x);
digitalWrite(column[8], 1);
delay(x);
digitalWrite(column[4], 1);
delay(x);
digitalWrite(column[5], 1);
delay(x);
digitalWrite(column[6], 1);
delay(x);
digitalWrite(column[10], 1);
delay(x);
digitalWrite(column[9], 1);
delay(x);
///////////////////////////////////////spiral out counter clockwise
digitalWrite(column[9], 0);
delay(x);
digitalWrite(column[10], 0);
delay(x);
digitalWrite(column[6], 0);
delay(x);
digitalWrite(column[5], 0);
delay(x);
digitalWrite(column[4], 0);
delay(x);
digitalWrite(column[8], 0);
delay(x);
digitalWrite(column[12], 0);
delay(x);
digitalWrite(column[13], 0);
delay(x);
digitalWrite(column[14], 0);
delay(x);
digitalWrite(column[15], 0);
delay(x);
digitalWrite(column[11], 0);
delay(x);
digitalWrite(column[7], 0);
delay(x);
digitalWrite(column[3], 0);
delay(x);
digitalWrite(column[2], 0);
delay(x);
digitalWrite(column[1], 0);
delay(x);
digitalWrite(column[0], 0);
delay(x);
///////////////////////////////////////spiral in counter clock wise
digitalWrite(column[0], 1);
delay(x);
digitalWrite(column[4], 1);
delay(x);
digitalWrite(column[8], 1);
delay(x);
digitalWrite(column[12], 1);
delay(x);
digitalWrite(column[13], 1);
delay(x);
digitalWrite(column[14], 1);
delay(x);
digitalWrite(column[15], 1);
delay(x);
digitalWrite(column[11], 1);
delay(x);
digitalWrite(column[7], 1);
delay(x);
digitalWrite(column[3], 1);
delay(x);
digitalWrite(column[2], 1);
delay(x);
digitalWrite(column[1], 1);
delay(x);
digitalWrite(column[5], 1);
delay(x);
digitalWrite(column[9], 1);
delay(x);
digitalWrite(column[10], 1);
delay(x);
digitalWrite(column[6], 1);
delay(x);
//////////////////////////////////////////////spiral out clock wise
digitalWrite(column[6], 0);
delay(x);
digitalWrite(column[10], 0);
delay(x);
digitalWrite(column[9], 0);
delay(x);
digitalWrite(column[5], 0);
delay(x);
digitalWrite(column[1], 0);
delay(x);
digitalWrite(column[2], 0);
delay(x);
digitalWrite(column[3], 0);
delay(x);
digitalWrite(column[7], 0);
delay(x);
digitalWrite(column[11], 0);
delay(x);
digitalWrite(column[15], 0);
delay(x);
digitalWrite(column[14], 0);
delay(x);
digitalWrite(column[13], 0);
delay(x);
digitalWrite(column[12], 0);
delay(x);
digitalWrite(column[8], 0);
delay(x);
digitalWrite(column[4], 0);
delay(x);
digitalWrite(column[0], 0);
delay(x);
}
}
//////////////////////////////////////go through all leds one at a time
void goThroughAllLedsOneAtATime()
{
int x = 15;
turnEverythingOff();
for(int y = 0; y<5; y++)
{
//0-3
for(int count = 8; count != 0; count--)
{
digitalWrite(layer[count-1], 1);
for(int i = 0; i<4; i++)
{
digitalWrite(column[i], 0);
delay(x);
digitalWrite(column[i], 1);
delay(x);
}
digitalWrite(layer[count-1], 0);
}
//4-7
for(int count = 0; count < 8; count++)
{
digitalWrite(layer[count], 1);
for(int i = 4; i<8; i++)
{
digitalWrite(column[i], 0);
delay(x);
digitalWrite(column[i], 1);
delay(x);
}
digitalWrite(layer[count], 0);
}
//8-11
for(int count = 8; count != 0; count--)
{
digitalWrite(layer[count-1], 1);
for(int i = 8; i<12; i++)
{
digitalWrite(column[i], 0);
delay(x);
digitalWrite(column[i], 1);
delay(x);
}
digitalWrite(layer[count-1], 0);
}
//12-15
for(int count = 0; count < 8; count++)
{
digitalWrite(layer[count], 1);
for(int i = 12; i<16; i++)
{
digitalWrite(column[i], 0);
delay(x);
digitalWrite(column[i], 1);
delay(x);
}
digitalWrite(layer[count], 0);
}
}
}
Работает отлично, нареканий нет. Но захотел я туда-же на arduino mega, на которой и собрал все это, воткнуть кнопку, по нажатию которой бы "мигание" и "свечение" останавливалось бы.
Снова подредактировал код:
int column[16]={13,12,11,10,9,8,7,6,5,4,3,2,50,51,52,53};
int layer[8]={A7,A6,A5,A4,A3,A2,A1,A0};
int time = 250;
int button=48;
int flag=0;
void setup()
{
pinMode(48, INPUT);
//setting rows to ouput
for(int i = 0; i<16; i++)
{
pinMode(column[i], OUTPUT);
}
//setting layers to output
for(int i = 0; i<8; i++)
{
pinMode(layer[i], OUTPUT);
}
//seeding random for random pattern
randomSeed(analogRead(10));
}
//xxxxxxxxxxxxxxxxxxxxFUNCTION LOOPxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
void loop()
{
buttonOnorOff();
turnEverythingOff();//turn all off
buttonOnorOff();
flickerOn();
buttonOnorOff();
turnEverythingOn();//turn all on
delay(time);
buttonOnorOff();
turnOnAndOffAllByLayerUpAndDownNotTimed();
buttonOnorOff();
layerstompUpAndDown();
buttonOnorOff();
turnOnAndOffAllByColumnSideways();
delay(time);
buttonOnorOff();
aroundEdgeDown();
buttonOnorOff();
turnEverythingOff();
buttonOnorOff();
randomflicker();
buttonOnorOff();
randomRain();
buttonOnorOff();
diagonalRectangle();
buttonOnorOff();
goThroughAllLedsOneAtATime();
buttonOnorOff();
propeller();
buttonOnorOff();
spiralInAndOut();
buttonOnorOff();
flickerOff();
buttonOnorOff();
turnEverythingOff();
delay(500);
}
//xxxxxxxxxxxxxxxxxxxxFUNCTIONSxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
void buttonOnorOff()
{
if(digitalRead(48)==HIGH&&flag==0)
{
turnEverythingOff();
flag=1;
buttonOnorOff();
}
if(digitalRead(48)==LOW&&flag==1)
{
void loop();
flag=0;
}
}
///////////////////////////////////////////////////////////turn all off
void turnEverythingOff()
{
for(int i = 0; i<16; i++)
{
digitalWrite(column[i], 1);
}
for(int i = 0; i<8; i++)
{
digitalWrite(layer[i], 0);
}
}
////////////////////////////////////////////////////////////turn all on
void turnEverythingOn()
{
for(int i = 0; i<16; i++)
{
digitalWrite(column[i], 0);
}
//turning on layers
for(int i = 0; i<8; i++)
{
digitalWrite(layer[i], 1);
}
}
///////////////////////////////////////////////////////turn columns off
void turnColumnsOff()
{
for(int i = 0; i<16; i++)
{
digitalWrite(column[i], 1);
}
}
/////////////////////////////////////////////////////////////flicker on
void flickerOn()
{
int i = 150;
while(i != 0)
{
turnEverythingOn();
delay(i);
turnEverythingOff();
delay(i);
i-= 5;
}
}
//////////////turn everything on and off by layer up and down NOT TIMED
void turnOnAndOffAllByLayerUpAndDownNotTimed()
{
int x = 75;
for(int i = 5; i != 0; i--)
{
turnEverythingOn();
for(int i = 8; i!=0; i--)
{
digitalWrite(layer[i-1], 0);
delay(x);
}
for(int i = 0; i<8; i++)
{
digitalWrite(layer[i], 1);
delay(x);
}
for(int i = 0; i<8; i++)
{
digitalWrite(layer[i], 0);
delay(x);
}
for(int i = 8; i!=0; i--)
{
digitalWrite(layer[i-1], 1);
delay(x);
}
}
}
//////////////////////////turn everything on and off by column sideways
void turnOnAndOffAllByColumnSideways()
{
int x = 85;
turnEverythingOff();
//turn on layers
for(int i = 0; i<8; i++)
{digitalWrite(layer[i], 1);}
for(int y = 0; y<5; y++)
{
//turn on 0-3
for(int i = 0; i<8; i++)
{digitalWrite(column[i], 0);
delay(x);}
//turn on 4-7
for(int i = 4; i<8; i++)
{digitalWrite(column[i], 0);
delay(0);}
//turn on 8-11
for(int i = 8; i<12; i++)
{digitalWrite(column[i], 0);
delay(x);}
//turn on 12-15
for(int i = 12; i<16; i++)
{digitalWrite(column[i], 0);
delay(x);}
//turn off 0-3
for(int i = 0; i<4; i++)
{digitalWrite(column[i], 1);
delay(x);}
//turn off 4-7
for(int i = 4; i<8; i++)
{digitalWrite(column[i], 1);
delay(x);}
//turn off 8-11
for(int i = 8; i<12; i++)
{digitalWrite(column[i], 1);
delay(x);}
//turn off 12-15
for(int i = 12; i<16; i++)
{digitalWrite(column[i], 1);
delay(x);}
//turn on 12-15
for(int i = 12; i<16; i++)
{digitalWrite(column[i], 0);
delay(x);}
//turn on 8-11
for(int i = 8; i<12; i++)
{digitalWrite(column[i], 0);
delay(x);}
//turn on 4-7
for(int i = 4; i<8; i++)
{digitalWrite(column[i], 0);
delay(x);}
//turn on 0-3
for(int i = 0; i<4; i++)
{digitalWrite(column[i], 0);
delay(x);}
//turn off 12-15
for(int i = 12; i<16; i++)
{digitalWrite(column[i], 1);
delay(x);}
//turn off 8-11
for(int i = 8; i<12; i++)
{digitalWrite(column[i], 1);
delay(x);}
//turn off 4-7
for(int i = 4; i<8; i++)
{digitalWrite(column[i], 1);
delay(x);}
//turn off 0-3
for(int i = 0; i<4; i++)
{digitalWrite(column[i], 1);
delay(x);}
}
}
/////////////////////////////////////////up and down single layer stomp
void layerstompUpAndDown()
{
int x = 75;
for(int i = 0; i<8; i++)
{
digitalWrite(layer[i], 0);
}
for(int y = 0; y<5; y++)
{
for(int count = 0; count<1; count++)
{
for(int i = 0; i<8; i++)
{
digitalWrite(layer[i], 1);
delay(x);
digitalWrite(layer[i], 0);
}
for(int i = 8; i !=0; i--)
{
digitalWrite(layer[i-1], 1);
delay(x);
digitalWrite(layer[i-1], 0);
}
}
for(int i = 0; i<8; i++)
{
digitalWrite(layer[i], 1);
delay(x);
}
for(int i = 8; i!=0; i--)
{
digitalWrite(layer[i-1], 0);
delay(x);
}
}
}
////////////////////////////////////////////////////////////flicker off
void flickerOff()
{
turnEverythingOn();
for(int i = 0; i!= 150; i+=5)
{
turnEverythingOff();
delay(i+50);
turnEverythingOn();
delay(i);
}
}
///////////////////////////////////////////around edge of the cube down
void aroundEdgeDown()
{
for(int x = 200; x != 0; x -=50)
{
turnEverythingOff();
for(int i = 8; i != 0; i--)
{
digitalWrite(layer[i-1], 1);
digitalWrite(column[5], 0);
digitalWrite(column[6], 0);
digitalWrite(column[9], 0);
digitalWrite(column[10], 0);
digitalWrite(column[0], 0);
delay(x);
digitalWrite(column[0], 1);
digitalWrite(column[4], 0);
delay(x);
digitalWrite(column[4], 1);
digitalWrite(column[8], 0);
delay(x);
digitalWrite(column[8], 1);
digitalWrite(column[12], 0);
delay(x);
digitalWrite(column[12], 1);
digitalWrite(column[13], 0);
delay(x);
digitalWrite(column[13], 1);
digitalWrite(column[14], 0);
delay(x);
digitalWrite(column[14], 1);
digitalWrite(column[15], 0);
delay(x);
digitalWrite(column[15], 1);
digitalWrite(column[11], 0);
delay(x);
digitalWrite(column[11], 1);
digitalWrite(column[7], 0);
delay(x);
digitalWrite(column[7], 1);
digitalWrite(column[3], 0);
delay(x);
digitalWrite(column[3], 1);
digitalWrite(column[2], 0);
delay(x);
digitalWrite(column[2], 1);
digitalWrite(column[1], 0);
delay(x);
digitalWrite(column[1], 1);
}
}
}
/////////////////////////////////////////////////////////random flicker
void randomflicker()
{
turnEverythingOff();
int x = 30;
for(int i = 0; i !=750; i+=2)
{
int randomLayer = random(0,8);
int randomColumn = random(0,16);
digitalWrite(layer[randomLayer], 1);
digitalWrite(column[randomColumn], 0);
delay(x);
digitalWrite(layer[randomLayer], 0);
digitalWrite(column[randomColumn], 1);
delay(x);
}
}
////////////////////////////////////////////////////////////random rain
void randomRain()
{
turnEverythingOff();
int x = 60;
for(int i = 0; i!=60; i+=2)
{
int randomColumn = random(0,16);
digitalWrite(column[randomColumn], 0);
digitalWrite(layer[7], 1);
delay(x);
digitalWrite(layer[7], 0);
digitalWrite(layer[6], 1);
delay(x);
digitalWrite(layer[6], 0);
digitalWrite(layer[5], 1);
delay(x);
digitalWrite(layer[5], 0);
digitalWrite(layer[4], 1);
delay(x);
digitalWrite(layer[4], 0);
digitalWrite(layer[3], 1);
delay(x);
digitalWrite(layer[3], 0);
digitalWrite(layer[2], 1);
delay(x);
digitalWrite(layer[2], 0);
digitalWrite(layer[1], 1);
delay(x);
digitalWrite(layer[1], 0);
digitalWrite(layer[0], 1);
delay(x);
digitalWrite(layer[0], 0);
digitalWrite(column[randomColumn], 1);
}
}
/////////////////////////////////////////////////////diagonal rectangle
void diagonalRectangle()
{
int x = 350;
turnEverythingOff();
for(int count = 0; count<5; count++)
{
//top left
for(int i = 0; i<8; i++)
{digitalWrite(column[i], 0);}
digitalWrite(layer[3], 1);
digitalWrite(layer[2], 1);
delay(x);
turnEverythingOff();
//middle middle
for(int i = 4; i<12; i++)
{digitalWrite(column[i], 0);}
digitalWrite(layer[1], 1);
digitalWrite(layer[2], 1);
delay(x);
turnEverythingOff();
//bottom right
for(int i = 8; i<16; i++)
{digitalWrite(column[i], 0);}
digitalWrite(layer[0], 1);
digitalWrite(layer[1], 1);
delay(x);
turnEverythingOff();
//bottom middle
for(int i = 4; i<12; i++)
{digitalWrite(column[i], 0);}
digitalWrite(layer[0], 1);
digitalWrite(layer[1], 1);
delay(x);
turnEverythingOff();
//bottom left
for(int i = 0; i<8; i++)
{digitalWrite(column[i], 0);}
digitalWrite(layer[0], 1);
digitalWrite(layer[1], 1);
delay(x);
turnEverythingOff();
//middle middle
for(int i = 4; i<12; i++)
{digitalWrite(column[i], 0);}
digitalWrite(layer[1], 1);
digitalWrite(layer[2], 1);
delay(x);
turnEverythingOff();
//top right
for(int i = 8; i<16; i++)
{digitalWrite(column[i], 0);}
digitalWrite(layer[2], 1);
digitalWrite(layer[3], 1);
delay(x);
turnEverythingOff();
for(int i = 4; i<12; i++)
{digitalWrite(column[i], 0);}
digitalWrite(layer[3], 1);
digitalWrite(layer[4], 1);
delay(x);
turnEverythingOff();
for(int i = 0; i<8; i++)
{digitalWrite(column[i], 0);}
digitalWrite(layer[4], 1);
digitalWrite(layer[5], 1);
delay(x);
turnEverythingOff();
for(int i = 4; i<12; i++)
{digitalWrite(column[i], 0);}
digitalWrite(layer[5], 1);
digitalWrite(layer[6], 1);
delay(x);
turnEverythingOff();
for(int i = 8; i<16; i++)
{digitalWrite(column[i], 0);}
digitalWrite(layer[6], 1);
digitalWrite(layer[7], 1);
delay(x);
turnEverythingOff();
for(int i = 4; i<12; i++)
{digitalWrite(column[i], 0);}
digitalWrite(layer[6], 1);
digitalWrite(layer[7], 1);
delay(x);
turnEverythingOff();
for(int i = 0; i<8; i++)
{digitalWrite(column[i], 0);}
digitalWrite(layer[6], 1);
digitalWrite(layer[7], 1);
delay(x);
turnEverythingOff();
for(int i = 4; i<12; i++)
{digitalWrite(column[i], 0);}
digitalWrite(layer[5], 1);
digitalWrite(layer[6], 1);
delay(x);
turnEverythingOff();
for(int i = 8; i<16; i++)
{digitalWrite(column[i], 0);}
digitalWrite(layer[4], 1);
digitalWrite(layer[5], 1);
delay(x);
turnEverythingOff();
for(int i = 4; i<12; i++)
{digitalWrite(column[i], 0);}
digitalWrite(layer[3], 1);
digitalWrite(layer[4], 1);
delay(x);
turnEverythingOff();
}
//top left
for(int i = 0; i<8; i++)
{digitalWrite(column[i], 0);}
digitalWrite(layer[3], 1);
digitalWrite(layer[2], 1);
delay(x);
turnEverythingOff();
}
//////////////////////////////////////////////////////////////propeller
void propeller()
{
turnEverythingOff();
int x = 90;
for(int y = 8; y>0; y--)
{
for(int i = 0; i<6; i++)
{
//turn on layer
digitalWrite(layer[y-1], 1);
//a1
turnColumnsOff();
digitalWrite(column[0], 0);
digitalWrite(column[5], 0);
digitalWrite(column[10], 0);
digitalWrite(column[15], 0);
delay(x);
//b1
turnColumnsOff();
digitalWrite(column[4], 0);
digitalWrite(column[5], 0);
digitalWrite(column[10], 0);
digitalWrite(column[11], 0);
delay(x);
//c1
turnColumnsOff();
digitalWrite(column[6], 0);
digitalWrite(column[7], 0);
digitalWrite(column[8], 0);
digitalWrite(column[9], 0);
delay(x);
//d1
turnColumnsOff();
digitalWrite(column[3], 0);
digitalWrite(column[6], 0);
digitalWrite(column[9], 0);
digitalWrite(column[12], 0);
delay(x);
//d2
turnColumnsOff();
digitalWrite(column[2], 0);
digitalWrite(column[6], 0);
digitalWrite(column[9], 0);
digitalWrite(column[13], 0);
delay(x);
//d3
turnColumnsOff();
digitalWrite(column[1], 0);
digitalWrite(column[5], 0);
digitalWrite(column[10], 0);
digitalWrite(column[14], 0);
delay(x);
}
}
//d4
turnColumnsOff();
digitalWrite(column[0], 0);
digitalWrite(column[5], 0);
digitalWrite(column[10], 0);
digitalWrite(column[15], 0);
delay(x);
}
//////////////////////////////////////////////////////spiral in and out
void spiralInAndOut()
{
turnEverythingOn();
int x = 60;
for(int i = 0; i<6; i++)
{
//spiral in clockwise
digitalWrite(column[0], 1);
delay(x);
digitalWrite(column[1], 1);
delay(x);
digitalWrite(column[2], 1);
delay(x);
digitalWrite(column[3], 1);
delay(x);
digitalWrite(column[7], 1);
delay(x);
digitalWrite(column[11], 1);
delay(x);
digitalWrite(column[15], 1);
delay(x);
digitalWrite(column[14], 1);
delay(x);
digitalWrite(column[13], 1);
delay(x);
digitalWrite(column[12], 1);
delay(x);
digitalWrite(column[8], 1);
delay(x);
digitalWrite(column[4], 1);
delay(x);
digitalWrite(column[5], 1);
delay(x);
digitalWrite(column[6], 1);
delay(x);
digitalWrite(column[10], 1);
delay(x);
digitalWrite(column[9], 1);
delay(x);
///////////////////////////////////////spiral out counter clockwise
digitalWrite(column[9], 0);
delay(x);
digitalWrite(column[10], 0);
delay(x);
digitalWrite(column[6], 0);
delay(x);
digitalWrite(column[5], 0);
delay(x);
digitalWrite(column[4], 0);
delay(x);
digitalWrite(column[8], 0);
delay(x);
digitalWrite(column[12], 0);
delay(x);
digitalWrite(column[13], 0);
delay(x);
digitalWrite(column[14], 0);
delay(x);
digitalWrite(column[15], 0);
delay(x);
digitalWrite(column[11], 0);
delay(x);
digitalWrite(column[7], 0);
delay(x);
digitalWrite(column[3], 0);
delay(x);
digitalWrite(column[2], 0);
delay(x);
digitalWrite(column[1], 0);
delay(x);
digitalWrite(column[0], 0);
delay(x);
///////////////////////////////////////spiral in counter clock wise
digitalWrite(column[0], 1);
delay(x);
digitalWrite(column[4], 1);
delay(x);
digitalWrite(column[8], 1);
delay(x);
digitalWrite(column[12], 1);
delay(x);
digitalWrite(column[13], 1);
delay(x);
digitalWrite(column[14], 1);
delay(x);
digitalWrite(column[15], 1);
delay(x);
digitalWrite(column[11], 1);
delay(x);
digitalWrite(column[7], 1);
delay(x);
digitalWrite(column[3], 1);
delay(x);
digitalWrite(column[2], 1);
delay(x);
digitalWrite(column[1], 1);
delay(x);
digitalWrite(column[5], 1);
delay(x);
digitalWrite(column[9], 1);
delay(x);
digitalWrite(column[10], 1);
delay(x);
digitalWrite(column[6], 1);
delay(x);
//////////////////////////////////////////////spiral out clock wise
digitalWrite(column[6], 0);
delay(x);
digitalWrite(column[10], 0);
delay(x);
digitalWrite(column[9], 0);
delay(x);
digitalWrite(column[5], 0);
delay(x);
digitalWrite(column[1], 0);
delay(x);
digitalWrite(column[2], 0);
delay(x);
digitalWrite(column[3], 0);
delay(x);
digitalWrite(column[7], 0);
delay(x);
digitalWrite(column[11], 0);
delay(x);
digitalWrite(column[15], 0);
delay(x);
digitalWrite(column[14], 0);
delay(x);
digitalWrite(column[13], 0);
delay(x);
digitalWrite(column[12], 0);
delay(x);
digitalWrite(column[8], 0);
delay(x);
digitalWrite(column[4], 0);
delay(x);
digitalWrite(column[0], 0);
delay(x);
}
}
//////////////////////////////////////go through all leds one at a time
void goThroughAllLedsOneAtATime()
{
int x = 15;
turnEverythingOff();
for(int y = 0; y<5; y++)
{
//0-3
for(int count = 8; count != 0; count--)
{
digitalWrite(layer[count-1], 1);
for(int i = 0; i<4; i++)
{
digitalWrite(column[i], 0);
delay(x);
digitalWrite(column[i], 1);
delay(x);
}
digitalWrite(layer[count-1], 0);
}
//4-7
for(int count = 0; count < 8; count++)
{
digitalWrite(layer[count], 1);
for(int i = 4; i<8; i++)
{
digitalWrite(column[i], 0);
delay(x);
digitalWrite(column[i], 1);
delay(x);
}
digitalWrite(layer[count], 0);
}
//8-11
for(int count = 8; count != 0; count--)
{
digitalWrite(layer[count-1], 1);
for(int i = 8; i<12; i++)
{
digitalWrite(column[i], 0);
delay(x);
digitalWrite(column[i], 1);
delay(x);
}
digitalWrite(layer[count-1], 0);
}
//12-15
for(int count = 0; count < 8; count++)
{
digitalWrite(layer[count], 1);
for(int i = 12; i<16; i++)
{
digitalWrite(column[i], 0);
delay(x);
digitalWrite(column[i], 1);
delay(x);
}
digitalWrite(layer[count], 0);
}
}
}
И не работает моя кнопка ((
Задумывалось так, что есть в коде много функций (визуально это как режимы мерцания) среди них есть функция turnEverythingOff(); которая дескать выключает все свечение. Дак по моей задумке должна была после нажатия зацикливаться эта функция (тоесть свечение постоянно выключено) и только после повторного нажатия функция бы прекращала бы свое зацикливание. Не получилось что-то реализовать это. Помогите пожалуйста разобраться, почему так???
p.s. за термины не пинайте, может чего и не так понаписал, не програмист я, учусь только.
Упс, забыл свернуть код, извиняюсь.
Все, сам разобрался, дело было в отсутствии задержки в дописанном куске кода. Всем спасибо ))) хотя спасибо то говорить некому