//kote for fast dimming all GPIOs(most) //used for opticx tree //build in 12x 5mW laser, 3x 3Watt blue high power led and lot of NYM 1.5mmq cooperwire as laser and led heatsink //laso 13 D882 3Ampere smd npntransistors pulsing negative to 33yF tantal to 5V (3used for leds rest optional) //have fun use kote or parts if usefull :3 [MEOW} #define control PC13 #define t1 PA15 #define t2 PA12 #define t3 PB12 #define blau1 PB9 #define blau2 PB8 #define blau3 PB7 #define tr4 PB6 #define tr5 PB5 #define tr6 PA10 #define tr7 PA9 #define tr8 PA8 #define tr9 PB15 #define tr10 PB14 #define tr11 PB10 #define tr12 PB11 #define tr13 PC13 #define lazer1 PC15 #define lazer2 PA0 #define lazer3 PA1 #define lazer4 PA2 #define lazer5 PA3 #define lazer6 PA4 #define lazer7 PA5 #define lazer8 PA6 #define lazer9 PA7 #define lazer10 PB0 #define lazer11 PB1 #define lazer12 PC14 void setup(){ pinMode(t1, INPUT); pinMode(t2, INPUT); pinMode(blau1,OUTPUT); pinMode(blau2,OUTPUT); pinMode(blau3,OUTPUT); pinMode(tr4,OUTPUT); pinMode(tr5,OUTPUT); pinMode(tr6,OUTPUT); pinMode(tr7,OUTPUT); pinMode(tr8,OUTPUT); pinMode(tr9,OUTPUT); pinMode(tr10,OUTPUT); pinMode(tr11,OUTPUT); pinMode(tr12,OUTPUT); pinMode(tr13,OUTPUT); pinMode(lazer1,OUTPUT); pinMode(lazer2,OUTPUT); pinMode(lazer3,OUTPUT); pinMode(lazer4,OUTPUT); pinMode(lazer5,OUTPUT); pinMode(lazer6,OUTPUT); pinMode(lazer7,OUTPUT); pinMode(lazer8,OUTPUT); pinMode(lazer9,OUTPUT); pinMode(lazer10,OUTPUT); pinMode(lazer11,OUTPUT); pinMode(lazer12,OUTPUT); pinMode(control,OUTPUT); digitalWrite(control,LOW); delay(300); } uint8_t onpress[7]; uint16_t timez=35;// need more time for adjusting uint32_t laz0r[15]; uint32_t offtime =100; uint8_t lazersp; uint32_t stepcount,blauu1,blauu2,blauu3,blauer; void loop(){zeitreise();} long maintime=millis();long littletime=micros();long slowtime=millis();long dimmer=micros(); void zeitreise(void){ while ((millis()- maintime) >= 5){maintime=millis();onpress[6]++;istinput();} while ((millis()- slowtime) >= timez){digitalWrite(control,HIGH); lazersp++;if (lazersp >12) {lazersp=1; blauer++;if (blauer >=3){blauer=1;} if(blauer==1){blauu1=100;} if(blauer==2){blauu2=100;blauu3=100;}} laz0r[lazersp]=150;slowtime = millis(); } while ((micros()- dimmer) >= 2000){ for(uint8_t fa=1;fa<13;fa++){if(laz0r[fa]>=1){laz0r[fa]--;}} if (blauu1 >=10) {blauu1-=10;} if (blauu2 >=1) {blauu2-=1;} if (blauu3 >=1) {blauu3-=1;}digitalWrite(control,LOW); dimmer = micros();}//downfade while ((micros()- littletime) >= 2000){littletime = micros();pulspowder();} } void istinput(void){ if (onpress[6] >4) { if (digitalRead(t1) == HIGH && onpress[0] ==0 && timez <=140) { onpress[0] =1; timez++;} if (onpress[0] == 1) { onpress[1]++;} if (onpress[1] >= 10) { 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] >= 5) { onpress[3] =0; onpress[2]=0; } if (digitalRead(t3) == HIGH && onpress[3] ==0 && timez >=2) { onpress[3] =1; timez--;} if (onpress[3] == 1) { onpress[4]++;} if (onpress[4] >= 5) { onpress[4] =0; onpress[3]=0; } onpress[6]=0; }} void pulspowder(void) { for (uint32_t fcount=1; fcount <(offtime); fcount++) { if (fcount<=laz0r[1]) {digitalWrite(lazer1,LOW);} if (fcount> laz0r[1]) {digitalWrite(lazer1, HIGH); } if (fcount<=laz0r[2]) {digitalWrite(lazer2,LOW);} if (fcount> laz0r[2]) {digitalWrite(lazer2, HIGH); } if (fcount<=laz0r[3]) {digitalWrite(lazer3,LOW);} if (fcount> laz0r[3]) {digitalWrite(lazer3, HIGH); } if (fcount<=laz0r[4]) {digitalWrite(lazer4,LOW);} if (fcount> laz0r[4]) {digitalWrite(lazer4, HIGH); } if (fcount<=laz0r[5]) {digitalWrite(lazer5,LOW);} if (fcount> laz0r[5]) {digitalWrite(lazer5, HIGH); } if (fcount<=laz0r[6]) {digitalWrite(lazer6,LOW);} if (fcount> laz0r[6]) {digitalWrite(lazer6, HIGH); } if (fcount<=laz0r[7]) {digitalWrite(lazer7,LOW);} if (fcount> laz0r[7]) {digitalWrite(lazer7, HIGH); } if (fcount<=laz0r[8]) {digitalWrite(lazer8,LOW);} if (fcount> laz0r[8]) {digitalWrite(lazer8, HIGH); } if (fcount<=laz0r[9]) {digitalWrite(lazer9,LOW);} if (fcount> laz0r[9]) {digitalWrite(lazer9, HIGH); } if (fcount<=laz0r[10]) {digitalWrite(lazer10,LOW);} if (fcount> laz0r[10]) {digitalWrite(lazer10, HIGH); } if (fcount<=laz0r[11]) {digitalWrite(lazer11,LOW);} if (fcount> laz0r[11]) {digitalWrite(lazer11, HIGH); } if (fcount<=laz0r[12]) {digitalWrite(lazer12,LOW);} if (fcount> laz0r[12]) {digitalWrite(lazer12, HIGH); } if (fcount<=blauu1) {digitalWrite(blau1, HIGH);} if (fcount> blauu1) {digitalWrite(blau1, LOW); } if (fcount<=blauu2) {digitalWrite(blau2, HIGH);} if (fcount> blauu2) {digitalWrite(blau2, LOW); } if (fcount<=blauu3) {digitalWrite(blau3, HIGH);} if (fcount> blauu3) {digitalWrite(blau3, LOW); } }}