Помощь по коду. 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. за термины не пинайте, может чего и не так понаписал, не програмист я, учусь только.
Упс, забыл свернуть код, извиняюсь.
Все, сам разобрался, дело было в отсутствии задержки в дописанном куске кода. Всем спасибо ))) хотя спасибо то говорить некому