/* Rombik Arduino. Created by Azurius */ int i,z,x,c,v,b,a,s,d; int dt = 100; int dts = 2; int nprog =1; int tmp1=0, tmp2=0, tmp3=0; int timeb=0, timew=0; int LEDM[4][4] = { 4,5,6,7, 8,9,10,11, 16,17,18,19, 15,14,12,13}; int LEDF[4] = { 3,2,0,1}; int ma[12]={ 4,5,6,7,11,19,13,12,14,15,16,8}; int mas[4]={ 0,3,12,15}; void setup() { for (i=0;i<4;i++){ for (z=0;z<4;z++){ pinMode(LEDM[i][z], OUTPUT); } } for (i=0;i<4;i++){ pinMode(LEDF[i], OUTPUT); } LedOFFAll(); //tushim vse pered nachalom } void LedON(int pin){ digitalWrite(pin, HIGH); } void LedOFF(int pin){ digitalWrite(pin, LOW); } void DotON(int kx, int ky, int kz){ LedON(LEDM[kx][ky]); LedON(LEDF[kz]); } void DotOFF(int kx,int ky, int kz){ LedOFF(LEDM[kx][ky]); LedOFF(LEDF[kz]); } void LedOFFAll(){ for (i=0;i<4;i++){ for (z=0;z<4;z++){ LedOFF(LEDM[i][z]); } LedOFF(LEDF[i]); } } void change(){ timew=millis(); if ((timew-timeb)>=10000){nprog++;timeb=millis();dt=70;} if (nprog==10) nprog=1; } void loop() { change(); //nprog = 0; //##########[## Prog 0 ############## // ALL ON if (nprog==0){ // ON begin for (c=0;c<4;c++){ LedON(LEDF[c]); for (i=0;i<4;i++){ for (z=0;z<4;z++){ LedON(LEDM[i][z]); delay(300); LedOFF(LEDM[i][z]); } } LedOFF(LEDF[c]); } } // end nprog 0 //############ Prog 1 ############## // zajigaet po ocheredi tochkami if (nprog==1){ // ON begin for (c=0;c<4;c++){ for (i=0;i<4;i++){ for (z=0;z<4;z++){ DotON(i,z,c); delay(dt); DotOFF(i,z,c); } } } } // end nprog 1 //############ Prog 2 ############## // zajigaem stolbiki po ocheredi if (nprog==2){ // ON begin for (c=0;c<4;c++){ LedON(LEDF[c]); } for (i=0;i<4;i++){ for (z=0;z<4;z++){ LedON(LEDM[i][z]); delay(dt); } } for (i=0;i<4;i++){ for (z=0;z<4;z++){ delay(dt); LedOFF(LEDM[i][z]); } } } // end nprog 2 //############ Prog 3 ############## // zajigaem etaji po ocheredi if (nprog==3) { // ON begin for (i=0;i<4;i++){ for (z=0;z<4;z++){ //LedON(LEDF[c]); LedON(LEDM[i][z]); } } for (c=0;c<4;c++){ LedON(LEDF[c]); delay(dt); LedOFF(LEDF[c]); } LedOFFAll(); } //end nprog 3 //############ Prog 4 ############## // Zmeyka po granyam if (nprog ==4){ dt=30; while(1){ x=v; v=random(0,3); if(x!=v){break;} } if(v==0){if(i==0){ for(b=0;b<4;b++){i=b;DotON(i,z,c); delay(dt); DotOFF(i,z,c);}} else{ for(b=3;b>-1;b--){i=b;DotON(i,z,c); delay(dt); DotOFF(i,z,c);}} } if(v==1){if(z==0){ for(b=0;b<4;b++){z=b;DotON(i,z,c); delay(dt); DotOFF(i,z,c);}} else{ for(b=3;b>-1;b--){z=b;DotON(i,z,c); delay(dt); DotOFF(i,z,c);}} } if(v==2){if(c==0){ for(b=0;b<4;b++){c=b;DotON(i,z,c); delay(dt); DotOFF(i,z,c);}} else{ for(b=3;b>-1;b--){c=b;DotON(i,z,c); delay(dt); DotOFF(i,z,c);}} } } //end nprog 4 //############ Prog 5 ############## // goryashie grani if (nprog == 5){ for (c=0;c<4;c++){ LedON(LEDF[c]); for (i=0;i<12;i++){ LedON(ma[i]); if (c==1 | c==2){ i=i+2; } } delay(dts); LedOFF(LEDF[c]); for (i=0;i<12;i++){ LedOFF(ma[i]); } } }// end nprog 5 //############ 6 ########### // ploskosti po ocheredi if (nprog==6){ // ON begin for (i=0;i<4;i++){ LedON(LEDM[i][0]); LedON(LEDM[i][3]); LedON(LEDF[i]); } delay(1000); LedOFFAll(); for (i=0;i<4;i++){ LedON(LEDM[0][i]); LedON(LEDM[3][i]); LedON(LEDF[i]); } delay(1000); LedOFFAll(); } //end nprog 6 //############ 7 ########### if (nprog==7){ i=random(0,4); z=random(0,4); c=random(0,4); DotON(i,z,c); delay(dt); DotOFF(i,z,c); } //end nprog 7 //############ 8 ########### if (nprog==8){ //random up i=random(0,4); z=random(0,4); v=random(0,4); b=random(0,4); a=random(0,4); s=random(0,4); LedON(LEDM[i][z]); LedON(LEDM[v][b]); LedON(LEDM[a][s]); for (c=0;c<4;c++){ LedON(LEDF[c]); delay(dt); LedOFF(LEDF[c]); } LedOFF(LEDM[i][z]); LedOFF(LEDM[v][b]); LedOFF(LEDM[a][s]); } //end nprog 8 //############ 8 ########### if (nprog==9){ //obhod po krugu LedOFFAll(); for(c=0;c<4;c++){ LedON(LEDF[c]); } for(i=0;i<12;i++){ LedON(ma[i]); delay(dt); if(i>1){LedOFF(ma[i-2]);} } } //end nprog 9 } // end loop
Source: https://habr.com/ru/post/234019/