//MEOW =^.^= #define B10 PB12 #define B9 PB13 #define B8 PB14 #define B7 PB15 #define B6 PA8 #define B5 PA9 #define B4 PA10 #define B3 PB5 #define B2 PB6 #define B1 PB7 #define t1 PA15 #define t2 PA12 #define rot0 PC13 #define grun0 PC14 #define blau0 PC15 #define rot1 PA0 #define grun1 PA1 #define blau1 PA2 uint16_t matrix[6][6][7]; //last: color, brighteness, (autocalculatet: redduty,greenduty,blueduty, whitadder, darkadder) int8_t onpress[5]; int8_t zeitregen,blinkt,setzen; uint16_t nenraincount=0; long maintime=millis(); long maintime2=micros(); long maintime3=millis(); void setup() { pinMode(rot0, OUTPUT); pinMode(grun0, OUTPUT); pinMode(blau0, OUTPUT); pinMode(rot1, OUTPUT); pinMode(grun1, OUTPUT); pinMode(blau1, OUTPUT); pinMode(B1, OUTPUT); pinMode(B2, OUTPUT); pinMode(B3, OUTPUT); pinMode(B4, OUTPUT); pinMode(B5, OUTPUT); pinMode(B6, OUTPUT); pinMode(B7, OUTPUT); pinMode(B8, OUTPUT); pinMode(B9, OUTPUT); pinMode(B10, OUTPUT); pinMode(t1, INPUT); pinMode(t2, INPUT); noc(); nol(); } void loop() { zeitreise(); anirainbow(); machlicht(); //drueckmich(); //digitalWrite(B1,HIGH); //capfadetest(); } void drueckmich(void){ if (onpress[4] >=10) { if (digitalRead(t1) == HIGH && onpress[0] ==0 ) { } if (onpress[0] == 1) { onpress[1]++; } if (onpress[1] >= 20) { onpress[1] =0; onpress[0]=0; } if (digitalRead(t2) == HIGH && onpress[2] ==0 ) { } if (onpress[2] == 1) { onpress[3]++; } if (onpress[3] >= 5) { onpress[3] =0; onpress[2]=0; } blinkt++; onpress[4]=0; }}//tagrum void anirainbow(void) { } void alltest(void){ for (int8_t ixig=0; ixig <=5;ixig++) { for (int8_t yrig =0; yrig <=4; yrig++){ matrix[ixig][yrig][0]=10; // matrix[ixig][yrig][1]=1; // if (matrix[ixig][yrig][1]>800) {matrix[ixig][yrig][1]=0;} }}} void zeitreise(void){ while ((millis()- maintime) >= 5) { //onpress[4]++; maintime = millis(); } while ((micros()- maintime2) >= 50) { maintime2 = micros(); } while ((millis()- maintime3) >= 10) { maintime3 = millis();alltest();//nenraincount++; if (nenraincount>605) {nenraincount=0;} } } int duty[3]; int rainbow=0; void rainbowcalc(void) { for( int horizon = 0; horizon <=5; horizon ++) { for( int senkr = 0; senkr <=4; senkr ++) { rainbow=matrix[horizon][senkr][0]; if(rainbow >=0 && rainbow <=400) {duty[0] =400; duty[1] =rainbow; duty[2] =0;} //rot ->gelb (rotmax grün+ blau0) if(rainbow >=401 && rainbow <=801) {duty[0] =(400 -(rainbow -401)); duty[1] =400; duty[2] =0;} //gelb ->grün (rot- grünmax blau0) if(rainbow >=802 && rainbow <=1202) {duty[0] =0; duty[1] =400; duty[2] =(rainbow - 802);} //grün ->cyan (rot0 grünmax blau+) if(rainbow >=1203 && rainbow <=1603) {duty[0] =0; duty[1] =(400 -(rainbow - 1203)); duty[2] =400;} //cyan ->blau (rot0 grün- blaumax) if(rainbow >=1604 && rainbow <=2004) {duty[0] =(rainbow-1604); duty[1] =0; duty[2] =400;} //blau ->lila (rot+ grün0 blaumax) if(rainbow >=2005 && rainbow <=2405) {duty[0] =400; duty[1] =0; duty[2] =(400- (rainbow -2006));} //lila ->rot (rotmax grün0 blau-) if(rainbow >= 2406) {rainbow =0; matrix[horizon][senkr][0]=0;} matrix[horizon][senkr][2]=duty[0]; matrix[horizon][senkr][3]=duty[1]; matrix[horizon][senkr][4]=duty[2]; }}} long startriger=micros(); int32_t light,darkness,dcach; //1//3//4 void machlicht(void) { rainbowcalc(); for( int xder = 0; xder <=4; xder ++) { for( int ydas = 0; ydas <=4; ydas ++) { matrix[xder][ydas][5]=0;matrix[xder][ydas][2]=0; //if (matrix[xder][ydas][1] > 400){matrix[xder][ydas][6]=matrix[xder][ydas][1]-400; matrix[xder][ydas][5]=0;}//white 200 white 100color working on brightenes but rainbow running // if (matrix[xder][ydas][1] <=400){matrix[xder][ydas][5]=(400-(matrix[xder][ydas][1])); matrix[xder][ydas][6]=0;}//dark 100 color, 0less }} while ((micros()-startriger) >= 500) { for (int8_t spalten=0; spalten <=5; spalten++) { for (int8_t liene=1; liene <=2; liene++) { if (liene==1) { if (spalten==1) { digitalWrite(B1, LOW );} if (spalten==2) { digitalWrite(B3, LOW );} if (spalten==3) { digitalWrite(B5, LOW );} if (spalten==4) { digitalWrite(B7, LOW );} if (spalten==5) { digitalWrite(B9, LOW );} } if (liene==2) { if (spalten==1) { digitalWrite(B2, LOW );} if (spalten==1) { digitalWrite(B4, LOW );} if (spalten==1) { digitalWrite(B6, LOW );} if (spalten==1) { digitalWrite(B8, LOW );} if (spalten==1) { digitalWrite(B10, LOW );} } for (uint16_t fcount1=0; fcount1 <=802; fcount1++) { if (fcount1 == 0) {noc();} if (fcount1 <= 399) { if (fcount1 == ((401+matrix[splaten][liene-1][5])-matrix[splaten][liene-1][2])) { digitalWrite(rot0, HIGH );} if (fcount1 == ((401+matrix[splaten][liene-1][5])-matrix[splaten][liene-1][3])) { digitalWrite(grun0, HIGH );} if (fcount1 == ((401+matrix[splaten][liene-1][5])-matrix[splaten][liene-1][4])) { digitalWrite(blau0, HIGH );} if (fcount1 == ((401+matrix[splaten][liene+1][5])-matrix[splaten][liene+1][2])) { digitalWrite(rot1, HIGH );} if (fcount1 == ((401+matrix[splaten][liene+1][5])-matrix[splaten][liene+1][3])) { digitalWrite(gtun1, HIGH );} if (fcount1 == ((401+matrix[splaten][liene+1][5])-matrix[splaten][liene+1][4])) { digitalWrite(blau1, HIGH );} } if (fcount1 == (400 + matrix[splaten][liene-1][6])) { digitalWrite(rot0, HIGH );} if (fcount1 == (400 + matrix[splaten][liene-1][6])) { digitalWrite(grun0, HIGH );} if (fcount1 == (400 + matrix[splaten][liene-1][6])) { digitalWrite(blsu0, HIGH );} if (fcount1 == (400 + matrix[splaten][liene+1][6])) { digitalWrite(rot1, HIGH );} if (fcount1 == (400 + matrix[splaten][liene+1][6])) { digitalWrite(grun1, HIGH );} if (fcount1 == (400 + matrix[splaten][liene+1][6])) { digitalWrite(blau1, HIGH );} if (fcount1 >= 801) {nol();noc();} } nol(); } }startriger = micros();}} void nol(void) { digitalWrite(B1,HIGH); digitalWrite(B2,HIGH); digitalWrite(B3,HIGH); digitalWrite(B4,HIGH); digitalWrite(B5,HIGH); digitalWrite(B6,HIGH); digitalWrite(B7,HIGH); digitalWrite(B8,HIGH); digitalWrite(B9,HIGH); digitalWrite(B10,HIGH); } void noc(void) { digitalWrite(rot0,LOW); digitalWrite(grun0,LOW); digitalWrite(blau0,LOW); digitalWrite(rot1,LOW); digitalWrite(grun1,LOW); digitalWrite(blau1,LOW); } /* int heller=0; void capfadetest(void) { while ((micros()-startriger) >= 1500) { digitalWrite(grun1,HIGH); for (int8_t colorz=1; colorz <=3; colorz++) { for (int8_t liene=1; liene <=2; liene++) { for (int16_t fcount1=0; fcount1 <2002; fcount1++) { if (fcount1 == (2000-heller)){ digitalWrite(B1, LOW); } if (fcount1 >= 2000) {digitalWrite(B1, HIGH);} }}} startriger = micros(); heller++; if (heller >2000) {heller=0;} } } */ // [MEOW] more rainbowpower!