#include #include #include const byte chips = 1; // 1 chip, bit banged SPI on pins 6, 7, 8 MAX7219 display (chips, PA4, PA7, PA5); // Chips / LOAD / DIN / CLK String message = "Purrrrrr marderchens solderingstation standby"; #define blau PA10 #define rot PA8 #define grun PA9 #define blau1 PB11 #define rot1 PB10 #define grun1 PB1 #define tL1 PA11 #define tL2 PA15 #define tL3 PA12 #define tL4 PB4 //fail b3 #define tR1 PB7 #define tR2 PB8 #define tR3 PA6 #define tR4 PB0 #define CR PA1 #define CL PA0 #define tasterkolben PB6 #define ledkolben PB5 #define Rpower PB13 #define R12V PB14 #define Lpower PB12 #define L12V PB15 long tim = millis(); String outzi =""; int maintime =millis(); uint16_t soltemps[2][5]; void setup () { delay(250); display.begin (); pinMode(rot, OUTPUT); pinMode(grun, OUTPUT); pinMode(blau, OUTPUT); pinMode(rot1, OUTPUT); pinMode(grun1, OUTPUT); pinMode(blau1, OUTPUT); pinMode(Rpower, OUTPUT); pinMode(R12V, OUTPUT); pinMode(Lpower, OUTPUT); pinMode(L12V, OUTPUT); pinMode(ledkolben, OUTPUT); pinMode(tasterkolben,INPUT); pinMode(tL1, INPUT); pinMode(tL2, INPUT); pinMode(tL3, INPUT); pinMode(tL4, INPUT); pinMode(tR1, INPUT); pinMode(tR2, INPUT); pinMode(tR3, INPUT); pinMode(tR4, INPUT); soltemps[0][0]=1900; soltemps[0][1]=2500; soltemps[1][0]=2000; soltemps[1][1]=2500; digitalWrite(L12V, HIGH); digitalWrite(R12V, HIGH); digitalWrite(Rpower, HIGH); digitalWrite(Lpower, HIGH); } // end of setup int zeit1,wechsel; uint16_t temp1=1000; uint16_t temp2=1000; int status1,status2,soll1,soll2; int leds1t=0; int leds2t=0; int space1=50; int space2=50; boolean manualboost; void loop () { istinput(); zeitreise(); wuselleds(); } void zeigzeugs(){ if (status1 ==0 && status2 ==0){undlos("OFFline");} if (status1 >=1 && status2 >=1){ if (wechsel <=8) {zeigzahlR(temp2); zeigzahlL(temp1);} if (wechsel >8){ zeigzahlR(soltemps[1][soll2]); zeigzahlL(soltemps[0][soll1]);} } if (status1 >=1 && status2 ==0) {zeigzahlL(temp1); zeigzahlR(soltemps[0][soll1]);} if (status2 >=1 && status1 ==0) {zeigzahlR(temp2); zeigzahlL(soltemps[1][soll2]);} } int onpress[17]; void istinput() { if (zeit1 >=1) { if (digitalRead(tR1) == HIGH && onpress[0] ==0) { onpress[0] =1; status2++;} if (onpress[0] == 1) { onpress[1]++;} if (onpress[1] >= 5) { onpress[1] =0; onpress[0]=0;} if (digitalRead(tR2) == HIGH && onpress[2] ==0) { onpress[2] =1; soll2++;} if (onpress[2] == 1) { onpress[3]++;} if (onpress[3] >= 5) { onpress[3] =0; onpress[2]=0; } if (digitalRead(tR3) == HIGH && onpress[4] ==0) { onpress[4] =1; soltemps[1][soll2]+=10;} if (onpress[4] == 1) { onpress[5]++;} if (onpress[5] >= 5) { onpress[5] =0; onpress[4]=0; } if (digitalRead(tR4) == HIGH && onpress[6] ==0) { onpress[6] =1; soltemps[1][soll2]-=20;} if (onpress[6] == 1) { onpress[7]++;} if (onpress[7] >= 5) { onpress[7] =0; onpress[6]=0; } if (digitalRead(tL1) == HIGH && onpress[8] ==0) { onpress[8] =1; status1++; } if (onpress[8] == 1) { onpress[9]++;} if (onpress[9] >= 5) { onpress[9] =0; onpress[8]=0; } if (digitalRead(tL2) == HIGH && onpress[10] ==0) { onpress[10] =1; soll1++;} if (onpress[10] == 1) { onpress[11]++;} if (onpress[11] >= 5) { onpress[11] =0; onpress[10]=0; } if (digitalRead(tL3) == HIGH && onpress[12] ==0) { onpress[12] =1; soltemps[0][soll1]+=10; } //zeitc -signal if (onpress[12] == 1) { onpress[13]++;} if (onpress[13] >= 5) { onpress[13] =0; onpress[12]=0; } if (digitalRead(tL4) == HIGH && onpress[14] ==0) { onpress[14] =1; soltemps[0][soll1]-=20;} if (onpress[14] == 1) { onpress[15]++;} if (onpress[15] >= 5) { onpress[15] =0; onpress[14]=0; } zeit1=0; if (status1 >=3) {status1=0;} if (status2 >=3) {status2=0;} if (soll1 >=2) {soll1=0;} if (soll2 >=2) {soll2=0;} if (digitalRead(tasterkolben) ==HIGH) {manualboost=true;} if (digitalRead(tasterkolben) ==LOW) {manualboost=false;} }} void readmessi(void){ if (temp1 < (analogRead(CL)/2)) {temp1+=1;} if (temp1 > (analogRead(CL)/2)) {temp1-=1;} if (temp2 < (analogRead(CR)/2)) {temp2+=1;} if (temp2 > (analogRead(CR)/2)) {temp2-=1;} } int zeitzis[6]; long shorttime=millis(); void zeitreise(void){ while ((millis()- maintime) >= 100) { zeigzeugs(); knallrelais(); wechsel++; if (wechsel >10) {wechsel=0;} leds1t++; if (leds1t > 40) {leds1t=0;} leds2t++; if (leds2t > 40) {leds2t=0;} maintime = millis(); } while ((millis()- shorttime) >= 50) { zeit1++; readmessi(); shorttime=millis();} } void wuselleds(void) { if((leds1t%8) ==0 && status1 ==1) {blitzlinks(); } if((leds1t%4) ==0 && status1 ==2) {blitzlinks(); } if((leds2t%8) ==0 && status2 ==1) {blitzlinks2(); } if((leds2t%4) ==0 && status2 ==2) {blitzlinks2(); } if(((leds1t+1)%2)==0) {digitalWrite(grun, LOW); digitalWrite(blau, LOW); digitalWrite(rot, LOW);} if(((leds1t+1)%2)==0) {digitalWrite(grun1, LOW); digitalWrite(blau1, LOW); digitalWrite(rot1, LOW);} } void blitzlinks(void) { if(temp1 <=(soltemps[0][soll1]-space1)){digitalWrite(grun, HIGH); } if(temp1 >(soltemps[0][soll1]-space1) && temp1 <=(soltemps[0][soll1]+space1+50)){digitalWrite(blau, HIGH);} if(temp1 >(soltemps[0][soll1]+space1+50)){digitalWrite(rot, HIGH);} } void blitzlinks2(void) { if(temp2 <=(soltemps[1][soll2]-space2)){digitalWrite(grun1, HIGH);} if(temp2 >(soltemps[1][soll2]-space2) && temp2 <=(soltemps[1][soll2]+space2+50)){digitalWrite(blau1, HIGH);} if(temp2 >(soltemps[1][soll2]+space2+50)){digitalWrite(rot1, HIGH);} } void knallrelais(void) { if (temp1 <=(soltemps[0][soll1]) && status1 >=1) { digitalWrite(Lpower, LOW); } if (temp1 >=(soltemps[0][soll1])){digitalWrite(Lpower,HIGH);} if (temp2 <=(soltemps[1][soll2]) && status2 >=1) { digitalWrite(Rpower, LOW); } if (temp2 >=(soltemps[1][soll2])){digitalWrite(Rpower,HIGH);} if (status1 ==2 || manualboost ==true) {digitalWrite(L12V, LOW);} if (status1 !=2 || manualboost ==false) {digitalWrite(L12V, HIGH); } if (status1 >=1) {digitalWrite(ledkolben,HIGH);} if (status2 ==2) {digitalWrite(R12V, LOW);} if (status2!=2) {digitalWrite(R12V, HIGH); } if (status1 ==0) {digitalWrite(Lpower,HIGH); digitalWrite(ledkolben,LOW);} if (status2 ==0) {digitalWrite(Rpower,HIGH);} } void zeigwortUzahl(String wortzz,int zahlzz){ zeigwort(wortzz); zeigzahlR(zahlzz); } void zeigzahlR(int zahlz) { outzi=""; if(zahlz <=9) {outzi+="0";} if(zahlz <=99) {outzi+="0";} if(zahlz <=999) {outzi+="0";} outzi+=String(zahlz); for (byte ixx = 0; ixx < 4; ixx++){display.sendChar (ixx+4, outzi[ixx]);}} void zeigzahlL(int zaalz) { outzi=""; if(zaalz <=9) {outzi+="0";} if(zaalz <=99) {outzi+="0";} if(zaalz <=999) {outzi+="0";} outzi+=String(zaalz); for (byte ixxx = 0; ixxx < 4; ixxx++){display.sendChar (ixxx, outzi[ixxx]);}} void zeigwort(String woortz) { for (int iqq = 0; iqq < 4; iqq++){display.sendChar (iqq, woortz[iqq]);}} void undlos(String meows) { // for print string to MAX 8dig display for (int i = 0; i < 8; i++){ display.sendChar (i, meows[i]); } } int ani=0; String adzi=""; void zeigzeit(long itstime) { outzi="";ani++; ani++; adzi=""; if (ani>=4) {ani=0;} if (ani==0) {adzi+="u";}if (ani==1) {adzi+="_";} if (ani==2) {adzi+="n";} if (ani==3) {adzi+="-";} if (((itstime/60/60)%60) <=9){outzi+="0";} outzi+=String(((itstime/60)/60)%60); outzi+=adzi; if (((itstime/60)%60) <=9){outzi+="0";} outzi+=String((itstime/60)%60); outzi+=adzi; if ((itstime%60) <=9){outzi+="0";} outzi+=String(itstime%60); for (byte jxx = 0; jxx < 8; jxx++){display.sendChar (jxx, outzi[jxx]);}}