//ktoe by marderchen use it usefull :3 //driver for 1x IRF4095 pulsing for powercondroling 14.4V (providet by 2x 2Astepup from 12x 18650 li-ion cells //oset leds as powerbar //4 microswitches, 2 stetting on/off, 2set power+/- //li-ion>(5Vstm32f103c8t6)+ 3300yF capazitors (2x 10V insline) //also 3300yF parralel to fan /* pics * https://marderchen.lima-city.de/NEU+/needcooling_mobile-xbox360_stm32fanunit_1.jpg * https://marderchen.lima-city.de/NEU+/needmorecooling_xbox360_stm32fandriver.jpg * https://marderchen.lima-city.de/NEU+/needcoling_xbox369_STM32_fandriver_chargingelectronicstoptworking.jpg * https://marderchen.lima-city.de/NEU+/xbox360_14V4_stm32powersetable_mobilefanunit.jpg * li-ion cells charged by 3x tp4056 parrelel * have fun use it if usefull :3 */ #define rot1 PC13 //poweronŽ,fanstatus #define blau1 PC14 //poweronŽ,fanstatus #define grun1 PC15 //poweronŽ,fanstatus #define led1 PA1 //yellow ones powered over 3V3 ofer dioderesistor #define led2 PA2 #define led3 PA3 #define led4 PA4 #define led5 PA5 #define led6 PA6 #define led7 PA7 #define led8 PB0 #define led9 PB1 #define blau0 PB10 #define t1 PA15 #define t2 PB14 #define t3 PA8 #define t4 PB15 #define t5 PB13 //nix #define fan PA0//GPIO->220R->D882 (3A NPN)->over 4x(470R)inline 14.4V charged gate uint8_t onpress[15]; int zeit1; void setup() { delay(200); pinMode(rot1,OUTPUT); pinMode(blau1,OUTPUT); pinMode(grun1,OUTPUT);pinMode(blau0,OUTPUT); pinMode(fan,OUTPUT); pinMode(led1,OUTPUT); pinMode(led2,OUTPUT); pinMode(led3,OUTPUT); pinMode(led4,OUTPUT); pinMode(led5,OUTPUT); pinMode(led6,OUTPUT); pinMode(led7,OUTPUT); pinMode(led8,OUTPUT); pinMode(led9,OUTPUT); pinMode(t1,INPUT); pinMode(t2,INPUT); pinMode(t3,INPUT); pinMode(t4,INPUT); pinMode(t5,INPUT); } uint16_t bar[10],meldy[10]; uint16_t fanP=0; boolean istan=false; void loop() { zeitreise();} void fadedown(void){ for (uint32_t wuz=0; wuz <10; wuz++) { if(bar[wuz]>=4){bar[wuz]-=4;}if(bar[wuz]>0){bar[wuz]--;}} for (uint32_t waz=0; waz <4; waz++) { if(meldy[waz]>=2){meldy[waz]-=2;}if(meldy[waz]>0){meldy[waz]--;}}} void istinput(void){zeit1++; if (zeit1 >=4) { if (digitalRead(t1) == HIGH && onpress[0] ==0) { onpress[0] =1;istan=true; } if (onpress[0] == 1) { onpress[1]++;} if (onpress[1] >=5) { onpress[1] =0; onpress[0]=0; } if (digitalRead(t2) == HIGH && onpress[2] ==0) { onpress[2] =1; istan=false; } if (onpress[2] == 1) { onpress[3]++;} if (onpress[3] >= 5) { onpress[3] =0; onpress[2]=0; } if (digitalRead(t3) == HIGH && onpress[4] ==0) { onpress[4] =1; if(fanP<=8){fanP++;} } if (onpress[4] == 1) { onpress[5]++;} if (onpress[5] >= 20) { onpress[5] =0; onpress[4]=0; } if (digitalRead(t4) == HIGH && onpress[6] ==0) { onpress[6] =1; if(fanP>=1){fanP--;} } if (onpress[6] == 1) { onpress[7]++;} if (onpress[7] >= 20) { onpress[7] =0; onpress[6]=0; } if((digitalRead(t1)||digitalRead(t2)||digitalRead(t3)||digitalRead(t4))==HIGH){meldy[0]=600;} // if (digitalRead(t5) == HIGH && onpress[8] ==0) { onpress[8] =1; } // if (onpress[8] == 1) { onpress[9]++;}if (onpress[9] >= 5) { onpress[9] =0; onpress[8]=0; } zeit1=0; }} long maintime=micros();long maintime3=millis();long flash=micros(); void zeitreise(void){ while ((millis()- maintime) >= 2){istinput();blinkekram(); maintime = millis();} while ((micros()- maintime3) >= 20) {fadedown(); maintime3 = micros();}// while ((micros()-flash) >= 2) {pulspowder();pulspowder();flash = micros();} } uint8_t positor,counter,hellist=700; uint16_t fanc[12]={1,2,3,5,10,20,35,80,200,999}; void blinkekram(void){ counter++;if(counter>100){counter=0;}//halbsec if(istan==true&&counter==0){meldy[2]=hellist;meldy[3]=hellist;} if(istan==true&&counter==45){meldy[1]=fanP*100;} if(istan==true&&counter==50){meldy[3]=hellist;} if(istan==true&&counter==25){for(uint8_t nicht=0;nicht<=8;nicht++){if(fanP>nicht){bar[nicht]=800;}}} if(counter==25){meldy[0]=hellist;} if(counter==75){meldy[1]=fanP;} } uint16_t maxx=1000; void pulspowder(void) { for (uint16_t fcount=0; fcount <=maxx; fcount++) { if (fcount <= (maxx-1) && fcount >=1) { if (fcount==(maxx-meldy[0])) {digitalWrite(rot1,HIGH);} if (fcount==(maxx-meldy[1])) {digitalWrite(grun1,HIGH);} if (fcount==(maxx-meldy[2])) {digitalWrite(blau1,HIGH);} if (fcount==(maxx-meldy[3])) {digitalWrite(blau0,HIGH);} if (fcount==(maxx-bar[0])) {digitalWrite(led1,HIGH);} if (fcount==(maxx-bar[1])) {digitalWrite(led2,HIGH);} if (fcount==(maxx-bar[2])) {digitalWrite(led3,HIGH);} if (fcount==(maxx-bar[3])) {digitalWrite(led4,HIGH);} if (fcount==(maxx-bar[4])) {digitalWrite(led5,HIGH);} if (fcount==(maxx-bar[5])) {digitalWrite(led6,HIGH);} if (fcount==(maxx-bar[6])) {digitalWrite(led7,HIGH);} if (fcount==(maxx-bar[7])) {digitalWrite(led8,HIGH);} if (fcount==(maxx-bar[8])) {digitalWrite(led9,HIGH);} if (fcount==(maxx-fanc[fanP])&&istan==true) {digitalWrite(fan,HIGH);} } if (fcount>=maxx){allof();}}} void allof(void){ digitalWrite(rot1,LOW);digitalWrite(grun1,LOW);digitalWrite(blau1,LOW);digitalWrite(blau0,LOW);digitalWrite(fan,LOW); digitalWrite(led1,LOW);digitalWrite(led2,LOW);digitalWrite(led3,LOW);digitalWrite(led4,LOW);digitalWrite(led5,LOW);digitalWrite(led6,LOW);digitalWrite(led7,LOW);digitalWrite(led8,LOW);digitalWrite(led9,LOW);} +-