//driver for 10nostalgie old relais retro soundatmo generator caused like the switching sound from relais somutch :3 //(5 24VDC running with ~35VDC 18.5V3.5ADC supply -> 4A 25V stepup ->positiv to relais (with freerunningdiode) negativ over D882 3A50VNPN to 3x470R ->GPIO //5x 110V relais ->18.5VDC -> D882->IRF4905->primarycoil ferrittrafo (coil in coil)->muchturns230Vcoil->diodesameway currentchanger->385V330yF flahslightcapacitor->railai with freediod->BD237->4700R->stmgpio //stm32F103C8T6: 18.5VDC->LM1117 ADJ (settet to 5V output with poti) ->WS2812B (20pcs 2each relai) ->AMS1117 5V to 3V3->STM // aditional ledvoltmeter drivingpower 18.5VDC switch for measure 5V or 35V for adjusting LM1117ADJ and 4Astepup //1x 25V 2200yF parralel to 18.5VDC, 2x 1000yF 50V parralel to 35V, 1x 3300yf 10V parralel to 5V //mosfetgate connecttet to 18.5VDC with 2parralel(2inline 470R) /*pictures * https://marderchen.lima-city.de/NEU+/relai_knattertron_progress.jpg * https://marderchen.lima-city.de/NEU+/relai_knattertron_npns_35-160Vcapacitors.jpg * https://marderchen.lima-city.de/NEU+/relai_knattertron_WS2812b_rainbowrelaistatuslights.jpg * https://marderchen.lima-city.de/NEU+/relai_knattertron_WS2812Btest.jpg * https://marderchen.lima-city.de/NEU+/relai_knattertron_WS2812BRAinbowledrelaiindikator.jpg * https://marderchen.lima-city.de/NEU+/relai_knattertron_LM1117ADJ_19Vto5Vcircuit.jpg * https://marderchen.lima-city.de/NEU+/relai_knattertron_progress2.jpg * https://marderchen.lima-city.de/NEU+/19Vto%3E160Vtrafo.jpg // just laying 2coil together and put some fertrit onit test by connecting 18.5VDC suppla manualy and measure volötage fine * https://marderchen.lima-city.de/NEU+/relai_knattertron_powerdone.jpg * https://marderchen.lima-city.de/NEU+/relai_knattertron_hopehardwaredone_rear.jpg * https://marderchen.lima-city.de/NEU+/relai_knattertron_hopehardwaredone_front.jpg * planed to put gliming lamp parralel to 385V capacitor to see if charged for warning and a resistor voltage splitter to measure charge voltage * led cases are transparen so should glow cute colorfull */ #include #define screeny 20 //bit longer than stripe CRGB leds[screeny+2]; #define control PC13 #define t1 PA12 #define t2 PA15 #define t3 PA10 #define t4 PB11 #define mostrans PB12 #define relai1 PB13 #define relai2 PB14 #define relai3 PB15 #define relai4 PA8 #define relai5 PA9 #define relai6 PA10 #define relai7 PB5 #define relai8 PB6 #define relai9 PB7 #define relai10 PB9 #define voltHIGH PA0 #define channelz 30 void setup(){ delay(500); FastLED.addLeds(leds, screeny+2); FastLED.setBrightness(255); pinMode(relai1,OUTPUT); pinMode(relai2,OUTPUT); pinMode(relai3,OUTPUT); pinMode(relai4,OUTPUT); pinMode(relai5,OUTPUT); pinMode(relai6,OUTPUT); pinMode(relai7,OUTPUT); pinMode(relai8,OUTPUT); pinMode(relai9,OUTPUT); pinMode(relai10,OUTPUT); pinMode(mostrans,OUTPUT); pinMode(control,OUTPUT); pinMode(t1,INPUT); pinMode(t2,INPUT); pinMode(t3,INPUT); pinMode(t4,INPUT); Serial3.begin(9600); ratemal();} uint8_t beatsplit,strop[channelz+2],helligkeiten[channelz+2],newtrigger,blinkdata[10][channelz+2],relaisteps[channelz+2],onpress[14]; uint16_t fanp=5; uint8_t longon=50,maxhel=249; void loop(){zeitreise();}// long slowtime=micros();long dimmer=micros(); long rlag=micros();long littletime=micros(); void zeitreise(void){ while ((micros()- slowtime)>20100){ //something between 19500-20500 raw- beatsplit++;if (beatsplit >40){beatsplit=1;newtrigger++;if(newtrigger>16){newtrigger=random(1,4)*3;ratemal();}} for(uint8_t fiz=0;fiz= 40){for(uint8_t fu=0;fu=1){strop[fu]-=1;}}dimmer = micros();}//downfade while ((micros()- littletime) >= 20){pulspowder();littletime = micros();}//generate 160V relaiofz(); while ((micros()- rlag) >= 4){for(uint8_t fi=0;fi1){relaion(fi);} if(relaisteps[fi] >=((maxhel+longon)-strop[fi])){relaiof(fi);relaisteps[fi]=0;}} machbunt();rlag = micros();}//knastterrelais } void ratemal(void){ for(uint8_t tik=0;tik<9;tik++){for(uint8_t tok=0;tok2) { if (digitalRead(t2) == HIGH && onpress[0] ==0 ) { onpress[0] =1;} if (onpress[0] == 1) { onpress[1]++;} if (onpress[1] >= 5) { onpress[1] =0; onpress[0]=0; } if (digitalRead(t1) == 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(t4) == HIGH && onpress[4] ==0 ) { onpress[4] =1;} if (onpress[4] == 1) { onpress[5]++;} if (onpress[5] >=5) { onpress[5] =0; onpress[4]=0; } if (digitalRead(t3) == HIGH && onpress[6] ==0 ) { onpress[6] =1; } if (onpress[6] == 1) { onpress[7]++;} if (onpress[7] >=5) { onpress[7] =0; onpress[6]=0; } if((digitalRead(t1) || digitalRead(t2) || digitalRead(t3) || digitalRead(t4))==HIGH){digitalWrite(control,LOW);} onpress[10]=0; }} void relaion(uint8_t dasda){ for (uint8_t dreier=0; dreier 1&&fcount <4 ) {digitalWrite(control,LOW);digitalWrite(mostrans,HIGH);} if (fcount==power) {digitalWrite(control, HIGH);digitalWrite(mostrans, LOW);}}}} void relaiofz(void){ digitalWrite(relai1, LOW);digitalWrite(relai2, LOW);digitalWrite(relai3, LOW);digitalWrite(relai4, LOW);digitalWrite(relai5, LOW); digitalWrite(relai6, LOW);digitalWrite(relai7, LOW);digitalWrite(relai8, LOW);digitalWrite(relai9, LOW);digitalWrite(relai10, LOW);} String text=""; String digits=""; boolean einmal=true; void listenPCstories(void) { digits=""; while(Serial3.available()>0) {//crapy 1 incomming char eaten and not readet dont know why.. int cachs = Serial3.read(); text+=(char)cachs; if (isDigit(cachs)) {digits+=(char)cachs; }//think not need intwert=digits.toInt(); here einmal=true; } }