//WS2812B driver hiihi think its code enough #include #define screeny 64 //number of leds CRGB leds[screeny]; CRGBPalette16 currentPalette; TBlendType currentBlending; extern CRGBPalette16 myRedWhiteBluePalette; #define ledoard PC13 #define led10603 PA8 #define led20603 PA9 #define led30603 PA10 #define t1 PB12 #define t2 PB13 #define t3 PB14 #define t4 PA7 #define t5 PB0 #define t6 PB1 #define t7 PB10 #define t8 PB11 #define chans (screeny*3) #define steps 24 #define modes 6 uint16_t color2=0,color=0,speedz=30,fine=0,laag=0,laag2=0,laag3=0,laag4=0,change=0,randx=0,bis=5,voll[20],mode=6; uint8_t data[chans+1][11],onpress[17],whit[chans]; long maintime = millis();long tbeat=micros();long tfade=micros(); boolean zufall=false; String outzi=""; //sequenzader old uint16_t beatsplit,strop[chans+1],helligkeiten[chans+1],newtrigger,blinkdata[steps+1][chans+1],isoncount,isoncount2,randset[9],ison2,picker,flicker,modi=3,doubleup=1,zufalll,brighty,speedy,speedymem; uint16_t moden[20]={1,2,4,6},mehrspeed[]={3,4,4,4,5,5,5};//2,3,4,5, uint16_t xmoden[7]={0,81,77,0,65,0,97}; long slowtime=micros();long dimmer=micros(); void setup(){ delay(1000); pinMode(ledoard,OUTPUT);pinMode(led10603,OUTPUT);pinMode(led20603,OUTPUT);pinMode(led30603,OUTPUT); pinMode(t1,INPUT);pinMode(t2,INPUT);pinMode(t3,INPUT);pinMode(t4,INPUT);pinMode(t5,INPUT);pinMode(t6,INPUT);pinMode(t7,INPUT);pinMode(t8,INPUT); FastLED.addLeds(leds, screeny); digitalWrite(ledoard,HIGH);digitalWrite(led10603,HIGH);digitalWrite(led20603,HIGH);digitalWrite(led30603,HIGH); delay(50);ratemalz();} void loop(){ zeitreise(); } void zeitreise(void){ while ((millis()- maintime) >= 10) { istinput(); laag2++;if(laag2>16){laag2=0; for(uint8_t r =0;rvoll[r+1]){voll[r]--;} if(voll[r]==voll[r+1]){voll[r+1]=random(0,40);} if(voll[r]change*100){laag4=0;change=random(8,35);mode=random(0,6);}} maintime = millis();} while((micros()- tbeat)>(20100)){///6 randx=random(0,chans);if(whit[randx]==0){whit[randx]=255;} //sparklecoloroutade calcdata();tbeat=micros();} while((micros()- tfade)>=480){ for(uint8_t q=0;q=data[q][2]){data[q][0]-=data[q][2];}if(data[q][0]>0){data[q][0]--;} if(whit[q]>0){whit[q]--;}}regenbogen(); laag3++;if(laag3>2+voll[2]/2){laag3=0; for(uint8_t rr =bis;rrvoll[rr+1]){voll[rr]--;} if(voll[rr]==voll[rr+1]){voll[rr+1]=random(0,255);} if(voll[rr](20100/doubleup)){//something between 19500-20500 raw- beatsplit++;if (beatsplit >=xmoden[doubleup]){beatsplit=1;newtrigger++;if(newtrigger>30){ratemalz();newtrigger=random(1,3)*3;}} for(uint8_t fiz=0;fiz= (220/(doubleup)*6)){for(uint8_t fap=0;fap=flicker){strop[fu]-=flicker;}if(strop[fu]>=1){strop[fu]-=1;}}}dimmer = micros();}//downfade } //sequenzadder new void calcdata(void){ for(uint8_t p=0;p=steps*data[p][4]){data[p][9]=0; if(data[p][8] >0){data[p][8]-=1;} //auszeit gilt für times ohne multi if(data[p][8]==0){data[p][10]++;} if(data[p][10]>=round(data[p][3]/data[p][4])){ //sequenzcounter gilt für times ohne multi data[p][10]=0; data[p][8]=random(chans/60,chans/18); //set alles neu kleiner zahl=mehr ledtraffic data[p][1]=random(0,5)*10+205; //starthelligkeit bis 200 data[p][3]=random(2,10)*4; //oft wiederhol sequenz bis neu data[p][4]=random(1,3); //mehrfache bufferlänge von steps data[p][7]=random(0,100); //ob laag start if(data[p][7]<30&&(mode==0||mode==2)){data[p][6]=random(steps/8,((steps/2)*data[p][4]));} //laag bis modulatorstart if(data[p][7]>30&&(mode==0||mode==3)){data[p][6]=0;} //nix laag only fixed interfall data[p][5]=random(4,((steps/2)*data[p][4])-data[p][6]); //steps modulator data[p][2]=random(2,8)*1+((steps/3.5)/data[p][5]); //wert abziehscvhritt von helligeit> kleiner modulator mehr wert }}}} //data 0:dutyout 1:dutypre 2:duty-wert 3:times 4:sqmulti 5:modulator 6:modullatstart 7:maybestart 8:auszeit 9:countbeat 10:countseq //sequenzader old void ratemalz(void){ zufall=random(0,100); for(uint8_t rt=0;rt<9;rt++){randset[rt]=random(0,110);} if(zufalll <10){doubleup=moden[0];} if(zufalll >=10&& zufall <40){doubleup=moden[1];} if(zufalll >=40&& zufall <70){doubleup=moden[2];} if(zufalll >=70){doubleup=moden[3];}doubleup=moden[0]; for(uint8_t tik=0;tik=40){ if(randset[2]<50){if(wisch%2==0){picker=random(0,chans);blinkdata[wisch][picker]=helligkeiten[picker];}} if(randset[3]<40){if(wisch%2==0){picker=random(0,chans);blinkdata[wisch][picker]=helligkeiten[picker];}} if(randset[4]<60){if(wisch%4==0){picker=random(0,chans);blinkdata[wisch][picker]=helligkeiten[picker];}} if(randset[5]<40){if(wisch%4==0){picker=random(0,chans);blinkdata[wisch][picker]=helligkeiten[picker];}} if(randset[6]<50){if(wisch%6==0){picker=random(0,chans);blinkdata[wisch][picker]=helligkeiten[picker];}} if(randset[7]<60){if(wisch%8==0){picker=random(0,chans);blinkdata[wisch][picker]=helligkeiten[picker];}} flicker=random(1,4)*3;} }waserraten();} void waserraten(void){ isoncount=0;ison2=0; for(uint16_t tak=0;tak=1){isoncount++;}}if(isoncount>1){ison2++;}}if(ison2<=8){ratemalz();}}//try solong until minimum 3flashes/sequenz void istinput(void){onpress[15]++; if (onpress[15] >2) { if (digitalRead(t1) == HIGH && onpress[0] ==0) { onpress[0] =1;digitalWrite(led30603,LOW);mode=0;zufall=false;} // if (onpress[0] == 1) { onpress[1]++;} if (onpress[1] >= 10) { onpress[1] =0;onpress[0]=0;digitalWrite(led30603,HIGH);} if (digitalRead(t2) == HIGH && onpress[2] ==0) { onpress[2] =1;digitalWrite(led30603,LOW);mode=1;zufall=false;} if (onpress[2] == 1) { onpress[3]++;} if (onpress[3] >= 5) { onpress[3] =0; onpress[2]=0;digitalWrite(led30603,HIGH);} if (digitalRead(t4) == HIGH && onpress[3] ==0) { onpress[3] =1;digitalWrite(led30603,LOW);mode=2;zufall=false;} if (onpress[3] == 1) { onpress[4]++;} if (onpress[4] >= 5) { onpress[4] =0; onpress[3]=0;digitalWrite(led30603,HIGH);} if (digitalRead(t5) == HIGH && onpress[5] ==0) { onpress[5] =1;digitalWrite(led30603,LOW);mode=3;zufall=false;} if (onpress[5] == 1) { onpress[6]++;} if (onpress[6] >= 10) { onpress[6] =0; onpress[5]=0;digitalWrite(led30603,HIGH);} if (digitalRead(t6) == HIGH && onpress[7] ==0) { onpress[7] =1;digitalWrite(led30603,LOW);mode=4;zufall=false;} if (onpress[7] == 1) { onpress[8]++;} if (onpress[8] >= 10) { onpress[8] =0; onpress[7]=0;digitalWrite(led30603,HIGH);} if (digitalRead(t7) == HIGH && onpress[9] ==0) { onpress[9] =1;digitalWrite(led30603,LOW);mode=5;zufall=false;} if (onpress[9] == 1) { onpress[10]++;} if (onpress[10] >= 10) { onpress[10] =0; onpress[9]=0;digitalWrite(led30603,HIGH);} if (digitalRead(t8) == HIGH && onpress[11] ==0) { onpress[11] =1;zufall=true;} if (onpress[11] == 1) { onpress[12]++;} if(onpress[12] >= 10) { onpress[12] =0; onpress[11]=0; } if ((onpress[0]||onpress[2]||onpress[3]||onpress[5]||onpress[7]||onpress[9]||onpress[11]||onpress[13])==1){digitalWrite(led10603,LOW);}else{digitalWrite(led10603,HIGH);} onpress[15]=0; }} void regenbogen(void){ laag++; if(laag>2){laag=0;color2+=voll[0]/4;} if (color2 > 4096) {color2=0; } color=color2; for( uint8_t y = 0; y < chans; y+=3) { color+=voll[1]/6; if(mode==0||mode==2||mode==3){leds[y/3].setRGB(data[y][0],data[y+1][0],data[y+2][0]);}// if(mode==1){leds[y/3]=ColorFromPalette(RainbowColors_p,color, 255,BLEND);} if(mode==4){leds[y/3]=ColorFromPalette(RainbowColors_p,voll[bis+1],voll[bis+2],BLEND);;} if(mode==5){leds[y/3].setRGB(whit[y],whit[y+1],whit[y+2]);} if(mode==6){leds[y/3].setRGB(strop[y],strop[y+1],strop[y+2]);} }FastLED.show();}