//MEOW =^.^= kot vor HEXAGON 6x 3Watt RGB with dpot reflector for flasdhing rainbowspots rounsd room bpm by tell stm bpm with 2buttons hihi working awesome since idea set steps between bpm by other tastersa have fun #define rot1 PB12 #define grun1 PB13 #define blau1 PB14 #define rot2 PB15 #define grun2 PA8 #define blau2 PA9 #define rot3 PA10 #define grun3 PB5 #define blau3 PB6 #define rot4 PB7 #define grun4 PB8 #define blau4 PB9 #define rot5 PB11 #define grun5 PB10 #define blau5 PB1 #define rot6 PC13 #define grun6 PC14 #define blau6 PC15 #define LED1 PA3 #define LED2 PA4 #define LED3 PA5 #define LED4 PA6 #define LED5 PA7 #define LED6 PB0 #define Tmulti PA0 #define Bred PA1 #define Bblue PA2 #define Tfix1 PA15 #define Tfix2 PA12 uint16_t leds[7][7]; uint8_t info[9]; uint8_t infoist[9]; int8_t onpress[8]; uint8_t steps=3; void setup() { pinMode(rot1, OUTPUT); pinMode(grun1, OUTPUT); pinMode(blau1, OUTPUT); pinMode(rot2, OUTPUT); pinMode(grun2, OUTPUT); pinMode(blau2, OUTPUT); pinMode(rot3, OUTPUT); pinMode(grun3, OUTPUT); pinMode(blau3, OUTPUT); pinMode(rot4, OUTPUT); pinMode(grun4, OUTPUT); pinMode(blau4, OUTPUT); pinMode(rot5, OUTPUT); pinMode(grun5, OUTPUT); pinMode(blau5, OUTPUT); pinMode(rot6, OUTPUT); pinMode(grun6, OUTPUT); pinMode(blau6, OUTPUT); pinMode(LED1, OUTPUT); pinMode(LED2, OUTPUT); pinMode(LED3, OUTPUT); pinMode(LED4, OUTPUT); pinMode(LED5, OUTPUT); pinMode(LED6, OUTPUT); pinMode(Bred, OUTPUT);pinMode(Bblue, OUTPUT); pinMode(Tfix1, INPUT); pinMode(Tfix2, INPUT); noLEDs(); } uint16_t zeit1; void loop() { zeitreise(); teachbeat(); //leds[4][0]=7; leds[4][1]=60; //leds[9][0]=0; leds[9][1]=55; //leds[5][0]=0; leds[5][1]=55; //leds[13][0]=0; leds[13][1]=55; //leds[9][0]=0; leds[9][1]=55; //leds[1][0]=0; leds[1][1]=55; } long beatleng =1580; boolean entwederoder=false; boolean startend=false; boolean bluestep=false; uint8_t ab=0; uint8_t ledviele=5; uint8_t range=480; void teachbeat(void){// hihi think beast beatsyncmethode tapsing taster to beat and controller auto contiu with tapsenspeed calculater betweensteps itsels.. use idea if usefull.. but its manual beatteching also howmany steps.. but works for every musicbpm, if (digitalRead(Tfix1) ==HIGH && entwederoder==false) { if (startend==false){beatleng=0;startend=true;}startend=false; entwederoder=true;} if (digitalRead(Tfix2) ==HIGH && entwederoder==true ) {entwederoder=false; } } void coloursetz(uint8_t dieled){ // leds[dieled][2] //0=colour, 1=bright, 2red3gren4blue 5=stillbrighttime if (leds[dieled][0]==0){ leds[dieled][2]=leds[dieled][1]; leds[dieled][3]=0; leds[dieled][4]=0;} //red if (leds[dieled][0]==1){ leds[dieled][2]=round(leds[dieled][1]/2); leds[dieled][3]=0; leds[dieled][4]=round(leds[dieled][1]/3);} //pink if (leds[dieled][0]==2){ leds[dieled][2]=round(leds[dieled][1]/2); leds[dieled][3]=0; leds[dieled][4]=round(leds[dieled][1]/2);} //mangenta if (leds[dieled][0]==3){ leds[dieled][2]=round(leds[dieled][1]/3); leds[dieled][3]=0; leds[dieled][4]=round(leds[dieled][1]/2);} //purple if (leds[dieled][0]==4){ leds[dieled][2]=0; leds[dieled][3]=0; leds[dieled][4]=leds[dieled][1];} //blue if (leds[dieled][0]==5){ leds[dieled][2]=0; leds[dieled][3]=round(leds[dieled][1]/4); leds[dieled][4]=round(leds[dieled][1]/2);} //cyanblue if (leds[dieled][0]==6){ leds[dieled][2]=0; leds[dieled][3]=leds[dieled][1]; leds[dieled][4]=leds[dieled][1];} //cyan if (leds[dieled][0]==7){ leds[dieled][2]=0; leds[dieled][3]=leds[dieled][1]; leds[dieled][4]=0;} //green if (leds[dieled][0]==8){ leds[dieled][2]=round(leds[dieled][1]/3); leds[dieled][3]=round(leds[dieled][1]/2); leds[dieled][4]=0;} //yellow if (leds[dieled][0]==9){ leds[dieled][2]=round(leds[dieled][1]/2); leds[dieled][3]=round(leds[dieled][1]/3); leds[dieled][4]=0;} //orange if (leds[dieled][0]==10){ leds[dieled][2]=leds[dieled][1]; leds[dieled][3]=leds[dieled][1]; leds[dieled][4]=leds[dieled][1];} //white }//kittens kant kount.. whatever fuzzelfurrmind.. just mostly not absolutlyworking if furrfurrheadwridedown :3 /* *3V3-o____________________________________ PA0 GPIO * | | | | | | | *221R-o-221R-o-221R-o-221R-o-....-o-221R-o-221R-o-2k5-o-GND */ uint8_t toleranz=30; uint16_t tastervalue[15] = {4096,3637,3446,3280,3120,2980,2850,2730,2620,2520,2430,2342,2562,3410}; uint16_t tmess=0; void istinput(void){ if (zeit1 >=1) { tmess=analogRead(Tmulti); // if (digitalRead(Tfix1) == HIGH && onpress[0] ==0) { onpress[0] =1; } // if (onpress[0] == 1) { onpress[1]++;} if (onpress[1] >= 3) { onpress[1] =0; onpress[0]=0; } // if (digitalRead(Tfix2) == HIGH && onpress[2] ==0) { onpress[2] =1; } // if (onpress[2] == 1) { onpress[3]++;} if (onpress[3] >= 40) { onpress[3] =0; onpress[2]=0; } if (tmess> (tastervalue[0]-toleranz) && tmess < (tastervalue[0]+toleranz) && onpress[4] ==0) {onpress[4] =1; steps++; } if (tmess> (tastervalue[1]-toleranz) && tmess < (tastervalue[1]+toleranz) && onpress[4] ==0) {onpress[4] =1; } if (tmess> (tastervalue[2]-toleranz) && tmess < (tastervalue[2]+toleranz) && onpress[4] ==0) {onpress[4] =1; } if (tmess> (100) && tmess < (tastervalue[13]+toleranz) && onpress[4] ==0) {onpress[4] =1;steps--;} // if (tmess> (tastervalue[14]-toleranz) && tmess < (tastervalue[14]+toleranz) && onpress[4] ==0) {onpress[4] =1; } if (onpress[4] == 1) { onpress[5]++;} if (onpress[5] >= 10) { onpress[5] =0; onpress[4]=0; } zeit1=0; }} long maintime=millis(); long maintime2=micros(); long maintime3=micros();long beaty=micros(); long timez=micros(); long flash=micros(); uint32_t beatcach=0; uint32_t beatcach2=0; uint8_t vielleicht=0; void zeitreise(void){ while ((millis()- maintime) >= 10){zeit1++;maintime = millis(); istinput();pulsblau(); bluestep=false;fader(); } // while ((micros()- beaty) >= 100) {beaty=micros(); if(entwederoder ==true) {beatleng++;} if (beatcach >beatleng) {beatcach=0; ab++; if (ab >1){ab=0;vielleicht=random(0,20); sync();} showpulse(ab); }beatcach++;beatcach2++; if(beatcach2 >round((beatleng*2)/steps)) {beatcach2=0; blitzy();} } while ((micros()- timez) >= 1300) {negativation();timez = micros();} while ((micros()-flash) >= 500) { schaltzeugs(); flash = micros();} } uint16_t zahly,zahlyzahl,picone,colrand2; void pulsblau(void){ if (bluestep==true) {digitalWrite(Bblue,LOW);} if (bluestep==false) {digitalWrite(Bblue,HIGH); } } uint8_t timerand=0; void blitzy(void){ zahly=random(1,5); zahlyzahl=random(0,10); colrand2=random(0,11); timerand=random((range/6),(range/2)); for (uint8_t ka=0; ka 9){leds[picone][0]=random(0,10);} leds[picone][6]=range-timerand; leds[picone][5]=5+timerand; }} for (uint8_t variable=0; variable<=ledviele; variable++) {coloursetz(variable);} if(bluestep==false){bluestep=true;} } void fader(void){ for (uint8_t vier=0;vier <=6; vier++) { if (info[vier] >0) {info[vier]--;} }} void sync(void){ for (uint8_t fuenf=0;fuenf <=6; fuenf++) { info[fuenf]=infoist[fuenf]; }} void showpulse(uint8_t anaus){ if (anaus==0){digitalWrite(Bred,HIGH);} if (anaus==1){digitalWrite(Bred,LOW);} } void negativation(void){ for (int8_t eins=0; eins <=ledviele; eins++) { if (leds[eins][5]>1){ leds[eins][1]=range; leds[eins][5]--;} if (leds[eins][5]==1){ leds[eins][1]=leds[picone][6]; leds[eins][5]--;}//leds[eins][0]=random(0,9); if (leds[eins][1]>0 && leds[eins][5] ==0){leds[eins][1]--; if (leds[eins][1]<10 && vielleicht <2) {leds[eins][0]=random(0,10); }} } for (uint8_t variabled=0; variabled<=ledviele; variabled++) {coloursetz(variabled);}} void applysteps(void){ for (uint8_t zwei=0;zwei <=6; zwei++) { if (zwei round(steps/2)) {infoist[zwei]=0;} }} void schaltzeugs(void) {// laaag left from other try.. causet dental ääh tantalum capacitors 33yF 10V for efery ledcoloursinglechip.. 16leds*3colours..its not even if run charge duty every 2000microseconds applysteps(); // for (uint8_t often=0; often<=3; often++) { for (uint16_t laag=0; laag <=range; laag++) { if (laag == 0) { noLED();noLEDs();} if (laag <= (range-1) && laag >=1) { if (laag == (range-leds[0][2])) { digitalWrite(rot1, HIGH);} if (laag == (range-leds[0][3])) { digitalWrite(grun1, HIGH);} if (laag == (range-leds[0][4])) { digitalWrite(blau1, HIGH);} if (laag == (range-leds[1][2])) { digitalWrite(rot2, HIGH);} if (laag == (range-leds[1][3])) { digitalWrite(grun2, HIGH);} if (laag == (range-leds[1][4])) { digitalWrite(blau2, HIGH);} if (laag == (range-leds[2][2])) { digitalWrite(rot3, HIGH);} if (laag == (range-leds[2][3])) { digitalWrite(grun3, HIGH);} if (laag == (range-leds[2][4])) { digitalWrite(blau3, HIGH);} if (laag == (range-leds[3][2])) { digitalWrite(rot4, HIGH);} if (laag == (range-leds[3][3])) { digitalWrite(grun4, HIGH);} if (laag == (range-leds[3][4])) { digitalWrite(blau4, HIGH);} if (laag == (range-leds[4][2])) { digitalWrite(rot5, HIGH);} if (laag == (range-leds[4][3])) { digitalWrite(grun5, HIGH);} if (laag == (range-leds[4][4])) { digitalWrite(blau5, HIGH);} if (laag == (range-leds[5][2])) { digitalWrite(rot6, HIGH);} if (laag == (range-leds[5][3])) { digitalWrite(grun6, HIGH);} if (laag == (range-leds[5][4])) { digitalWrite(blau6, HIGH);} if (laag == (range-info[0])) { digitalWrite(LED1, LOW);} if (laag == (range-info[1])) { digitalWrite(LED2, LOW);} if (laag == (range-info[2])) { digitalWrite(LED3, LOW);} if (laag == (range-info[3])) { digitalWrite(LED4, LOW);} if (laag == (range-info[4])) { digitalWrite(LED5, LOW);} if (laag == (range-info[5])) { digitalWrite(LED6, LOW);}} if (laag >=range) {noLEDs();noLED();} } }//} void noLED(void) {digitalWrite(rot1,LOW); digitalWrite(grun1,LOW); digitalWrite(blau1,LOW); digitalWrite(rot2,LOW); digitalWrite(grun2,LOW); digitalWrite(blau2,LOW); digitalWrite(rot3,LOW); digitalWrite(grun3,LOW); digitalWrite(blau3,LOW); digitalWrite(rot4,LOW); digitalWrite(grun4,LOW); digitalWrite(blau4,LOW); digitalWrite(rot5,LOW); digitalWrite(grun5,LOW); digitalWrite(blau5,LOW); digitalWrite(rot6,LOW); digitalWrite(grun6,LOW); digitalWrite(blau6,LOW); } void noLEDs(void){digitalWrite(LED1,HIGH);digitalWrite(LED2,HIGH); digitalWrite(LED3,HIGH); digitalWrite(LED4,HIGH); digitalWrite(LED5,HIGH); digitalWrite(LED6,HIGH); } // [MEOW] more rainbowpower! this RGB 6xWatt sirect connectetover 3Ampere NPN to 5V (exept res have assitiona 1000V1A SMD N4007 between) NPN charging 33uF10V tantal for each color (exept 66yF for red) leds produze lot of heat so case hexagon is build with lot of cooper case = heatsink soldered on led rear.. maybe additional fan in center reali running hot XD