//ips transparentpicture beat background flasher //GPIO>150Ohm>D882>GND from?V //5V #define D1 PC13 //rot #define D2 PC14 //gren #define D3 PC15 //blue // d882 npn ?v #define t1 PA4 //?coil pico #define t2 PA5 //relai1 #define t3 PA6 //relai2 #define t4 PA7 //ips #define tasterM PA0 #define outz 7 #define moduls 6 #define steps 40 void setup(){ delay(100); pinMode(D1,OUTPUT);pinMode(D2,OUTPUT);pinMode(D3,OUTPUT);pinMode(t1,OUTPUT);pinMode(t2,OUTPUT);pinMode(t3,OUTPUT);pinMode(t4,OUTPUT);} uint16_t onpress[18],toleranz=50;int16_t fasty=18,wert,ende=41,ab=0; boolean updatez=false; uint16_t dutyout[outz+1],dutyoutm[outz+1],fs=10,k=1,modulz=6,stepz,fcount1=0,beatsplit=0; uint16_t dasist[]={3700,3400,3150,2900,2700,2550,2400},fadefine=400;//measure values oh just many taster you want with one GPIO and resistors void loop(){zeitreise();} long maintime=millis(),flink=micros(),setz=micros(); void zeitreise(void){ while ((millis()- maintime) >=20) { downfade(); drueckmich(); maintime = millis();} while ((micros()- flink) >= 6) {//dutyout[0]=199;dutyout[5]=100; schalte(); flink=micros();} while ((micros()- setz)>(20100/2)){//something between 19500-20500 raw- beatsplit++; if (beatsplit >=ende){ ab++;if(ab>1){ab=0;} if(ab==0){dutyoutm[6]=120;dutyoutm[5]=100;} if(ab==1){dutyoutm[6]=100;dutyoutm[4]=100;} beatsplit=0;} setz=micros();}} uint8_t steptz=20; void downfade(void) { for (int16_t f=0;f=steptz) { dutyoutm[f]-=steptz;} if(dutyoutm[f]>0) { dutyoutm[f]--;} dutyout[f]=dutyoutm[f]*2; }} void drueckmich(void){onpress[14]++; if (onpress[14] >2) {onpress[14]=0; wert=analogRead(tasterM); if (wert>(dasist[0]-toleranz)&&wert<(dasist[0]+toleranz)&& onpress[0] ==0) {ende++;onpress[0]=1;} if (onpress[0]==1){onpress[1]++;}if(onpress[1]>=10){onpress[1]=0;onpress[0]=0;} if (wert>(dasist[1]-toleranz)&&wert<(dasist[1]+toleranz)&& onpress[2] ==0) {ende--;onpress[2]=1;} if (onpress[2]==1){onpress[3]++;}if(onpress[3]>=15){onpress[3]=0;onpress[2]=0;} if (wert>(dasist [2]-toleranz)&&wert<(dasist[2]+toleranz)&& onpress[4] ==0) {onpress[4] =1;} if (onpress[4]==1){onpress[5]++;}if(onpress[5]>=10){onpress[5]=0;onpress[4]=0;} if (wert>(dasist[3]-toleranz)&&wert<(dasist[3]+toleranz)&& onpress[6] ==0) {onpress[6] =1;} if (onpress[6]==1){onpress[7]++;}if(onpress[7]>=20){onpress[7]=0;onpress[6]=0;} if (wert>(dasist[4]-toleranz)&&wert<(dasist[4]+toleranz)&& onpress[8] ==0) {onpress[8] =1;} if (onpress[8]==1){onpress[9]++;}if(onpress[9]>=10){onpress[9]=0;onpress[8]=0;} if (wert>(dasist[5]-toleranz)&&wert<(dasist[5]+toleranz)&& onpress[10] ==0) {onpress[10] =1;} if (onpress[10]==1){onpress[11]++;}if(onpress[11]>=10){onpress[11]=0;onpress[10]=0;} updatez=false; for(uint8_t durchgeh=0;durchgeh<12;durchgeh+=2){if(onpress[durchgeh]==1){updatez=true;digitalWrite(D3,HIGH);}}}} void schalte(void) { if (fcount1 < fadefine && fcount1>=1) { if (fcount1 == ((fadefine)-dutyout[0])) { digitalWrite(D1,HIGH);} if (fcount1 == ((fadefine)-dutyout[1])) { digitalWrite(D2,HIGH);} if (fcount1 == ((fadefine)-dutyout[2])) { digitalWrite(D3,HIGH);} if (fcount1 == ((fadefine)-dutyout[3])) { digitalWrite(t1,HIGH);} if (fcount1 == ((fadefine)-dutyout[4])) { digitalWrite(t2,HIGH);} if (fcount1 == ((fadefine)-dutyout[5])) { digitalWrite(t3,HIGH);} if (fcount1 == ((fadefine)-dutyout[6])) { digitalWrite(t4,HIGH);} if (fcount1 >= (fadefine)) {aus();}} fcount1++;if(fcount1>fadefine){fcount1=0;aus();}} void aus(void) { digitalWrite(D1,LOW);digitalWrite(D2,LOW);digitalWrite(D3,LOW);digitalWrite(t1,LOW);digitalWrite(t2,LOW);digitalWrite(t3,LOW);digitalWrite(t4,LOW);}