//3Watt UV + 3Watt blue POLARIS still working on it //working currently.. use it or parts if there is something usefull :3 //Project by marderchen MEOW =^.^= have fun #define UV PB15 #define BLUE PB14 #define rot1 PA0 #define grun1 PA1 #define blau1 PA2 #define t1 PB12 #define t2 PB13 int ledmeng=21; int32_t duty[8]; int zeit[16]; int onpress[8]; int merker[16]; int32_t uvmax,uvmin,blaumax,blaumin,blauupspeed,blaudownspeed,uvupspeed,uvdownspeed,blautime,uvtime,uvset,blauset,uvrr,blaurr; int maintt=20; long maintime=millis(); long maintime2=micros(); long maintime3=millis(); void setup() { pinMode(UV, OUTPUT); pinMode(BLUE, OUTPUT); pinMode(rot1, OUTPUT); pinMode(grun1, OUTPUT); pinMode(blau1, OUTPUT); pinMode(t1, INPUT); //tasters for brightenesspectrum pinMode(t2, INPUT); delay(300); } void loop() { zeitreise(); drueckmich(); machlicht(); KAwiehell(); } int brightscaller; void drueckmich(void){ if (zeit[0] >=10) { if (digitalRead(t1) == HIGH && onpress[0] ==0) { onpress[0] =1; duty[3]=1200;} if (onpress[0] == 1) { onpress[1]++; } if (onpress[1] >= 20) { onpress[1] =0; onpress[0]=0; } if (digitalRead(t2) == HIGH && onpress[2] ==0) { onpress[2] =1; } if (onpress[2] == 1) { onpress[3]++; } if (onpress[3] >= 20) { onpress[3] =0; onpress[2]=0; } zeit[0]=0; }} void KAwiehell(void){ if (zeit[3] >blautime) { if (duty[1] > blaumax) {merker[0]=1; blauset++;} if (duty[1] < blaumin) {merker[0]=0;} if (merker[0] == 0) {duty[1]+=blauupspeed;} if (merker[0] == 1) {duty[1]-=blaudownspeed; if (duty[1] >200) { duty[1]-=blaudownspeed; duty[1]-=blaudownspeed;duty[1]-=blaudownspeed;}} zeit[3]=0;} if (zeit[4] > uvtime) { if (duty[0] > uvmax) {merker[1]=1; uvset++;} if (duty[0] < uvmin) {merker[1]=0;} if (merker[1] == 0) {duty[0]+=uvupspeed;} if (merker[1] == 1) {duty[0]-=uvdownspeed; if (duty[0] > 200) {duty[0]-=uvdownspeed; duty[0]-=uvdownspeed; }} zeit[4]=0;} if ( zeit[6] > merker[2]) { merker[2]=random(3,10); zeit[6]=0; blautime=random(10,100);} if ( zeit[7] > merker[3]) { merker[3]=random(3,10); zeit[7]=0; uvtime=random(10,100);} if ( zeit[14] > merker[12]) { merker[12]=random(5,15); zeit[14]=0; maintt=random(5,50); merker[0]=1;} if ( zeit[8] > merker[4]|| blauset>=blaurr) { merker[4]=random(10,30); merker[5]=random(0,500); zeit[8]=0; blauset=0; blaurr=random(2,6); if (merker[5] >= 0 && merker[5] < 200 ) { blaumax=random(0,50); uvmin=random(0,10); } if (merker[5] >= 200 && merker[5] < 400 ) { blaumax=random(0,70); uvmin=random(5,10); blautime=random(10,50);} if (merker[5] >= 400 && merker[5] < 450 ) { blaumax=random(70,100); uvmin=random(5,15); blautime=random(10,30);} if (merker[5] >= 450 && merker[5] < 475 ) { blaumax=random(100,600); uvmin=random(10,20); blautime=random(10,20);} if (merker[5] >= 475 ) { blaumax=random(600,1200); uvtime=random(5,100); blautime=random(3,20);} } if ( zeit[9] > merker[6] || uvset>= uvrr) { merker[6]=random(10,30); merker[7]=random(0,500); zeit[9]=0; uvset=0; uvrr=random(2,6); if (merker[7] >= 0 && merker[7] < 200 ) { uvmax=random(0,100); blaumin=random(0,5); } if (merker[7] >= 200 && merker[7] < 400 ) { uvmax=random(100,200); blaumin=random(0,7); uvtime=random(10,80);} if (merker[7] >= 400 && merker[7] < 450 ) { uvmax=random(300,400); blaumin=random(0,15); uvtime=random(10,50);} if (merker[7] >= 450 && merker[7] < 475 ) { uvmax=random(400,700); blaumin=random(5,20); uvtime=random(10,30);} if (merker[7] >= 475 ) { uvmax=random(700,1200); blautime=random(40,100); blaumin=random(10,20);uvtime=random(3,30);} } if ( zeit[10] > merker[8]) { merker[8]=random(3,15); zeit[10]=0; blauupspeed=random(1,2);} if ( zeit[11] > merker[9]) { merker[9]=random(3,15); zeit[11]=0; blaudownspeed=random(1,2);} if ( zeit[12] > merker[10]) { merker[10]=random(3,15); zeit[12]=0; uvupspeed=random(1,2);} if ( zeit[13] > merker[11]) { merker[11]=random(3,15); zeit[13]=0; uvdownspeed=random(1,2);} if ( zeit[15] > merker[12]) { merker[12]=random(10,30); zeit[15]=0; uvmax=random(600,1200); uvtime=1; merker[1]=0; blaumin=0; merker[0]=0; blautime=1; uvupspeed=random(4,8);} if ( zeit[16] > merker[12]) { merker[12]=random(10,30); zeit[16]=0; uvmin=0; uvtime=1; merker[1]=1; blaumin=0; merker[0]=0; blautime=1; uvdownspeed=random(4,7);} } void zeitreise(void){ while ((millis()- maintime) >= 100) { zeit[0]++; //zeit[1]++; zeit[2]++; maintime = millis(); } while ((micros()- maintime2) >= maintt) { maintime2 = micros(); } while ((millis()- maintime3) >= 1000) { zeit[6]++; zeit[7]++; zeit[8]++; zeit[8]++; zeit[10]++; zeit[11]++; zeit[12]++; zeit[13]++; zeit[14]++; zeit[15]++; maintime3 = millis(); }} long startriger=micros(); void machlicht(void) { while ((micros()-startriger) >= 2) { for (int32_t fcount1=1; fcount1 <(1002+brightscaller); fcount1++) { if (fcount1 == (1000-duty[0])) {digitalWrite(UV,HIGH);} if (fcount1 == (1000-duty[1])) {digitalWrite(BLUE,HIGH);} if (fcount1 == (1000-duty[2])) {digitalWrite(rot1,HIGH);} if (fcount1 == (1000-duty[3])) {digitalWrite(grun1,HIGH);} if (fcount1 == (1000-duty[4])) {digitalWrite(blau1,HIGH);} if (fcount1 >= (1001+brightscaller)) { digitalWrite(rot1, LOW ); digitalWrite(grun1, LOW ); digitalWrite(blau1, LOW ); digitalWrite(UV, LOW ); digitalWrite(BLUE, LOW ); }} zeit[3]++; zeit[4]++; startriger = micros(); } }