Untitled
unknown
c_cpp
2 years ago
4.7 kB
6
Indexable
int CWUTemp = 0; String sRead = ""; int hotwaterStartTemp; int hotwaterStopTemp; String next = ""; int heatingActive = 0; int wait = 0; unsigned long aktualnyCzas = 0; unsigned long zapamietanyCzas = 0; unsigned long roznicaCzasu = 0; int resolve(String input){ if(input == "hotwater start") return 1; if(input == "hotwater start temp") return 2; if(input == "hotwater stop") return 3; if(input == "hotwater stop temp") return 4; if(input == "hotwater temp") return 5; if(input == "heating start") return 6; if(input == "heating stop") return 7; if(input.indexOf("hotwater start temp") != -1 && input.length() > 20) return 8; if(input.indexOf("hotwater stop temp") != -1 && input.length() > 20) return 9; } void setup() { hotwaterStartTemp = 36; hotwaterStopTemp = 46; Serial.begin(9600); pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(4, OUTPUT); } void loop() { aktualnyCzas = millis(); roznicaCzasu = aktualnyCzas - zapamietanyCzas; CWUTemp = map(((analogRead(A0) - 20) * 3.04), 0, 1023, -40, 125); if(next.length() > 0){ sRead = next; next = ""; }else{ sRead = Serial.readString(); } if(sRead.length() > 0 || heatingActive == 1){ switch(resolve(sRead)){ case 1: { heatingActive = 1; Serial.println("hotwater is starting"); if(CWUTemp < hotwaterStopTemp){ digitalWrite(2, LOW); digitalWrite(3, LOW); digitalWrite(4, HIGH); while(CWUTemp < hotwaterStopTemp){ CWUTemp = map(((analogRead(A0) - 20) * 3.04), 0, 1023, -40, 125); aktualnyCzas = millis(); roznicaCzasu = aktualnyCzas - zapamietanyCzas; if (roznicaCzasu >= 1000UL) { zapamietanyCzas = aktualnyCzas; Serial.println(CWUTemp); } sRead = Serial.readString(); if(sRead.length()>0){ next = sRead; break; } } if(resolve(next) == 3 || resolve(next) == 6 || resolve(next) == 7){ heatingActive = 0; digitalWrite(4, LOW); digitalWrite(2, HIGH); Serial.println("hotwater is stopping"); } else{ break; } } break; } case 2: { Serial.print("Starting temperature for hotwater is: "); Serial.println(hotwaterStartTemp); if(heatingActive == 1){ heatingActive = 0; next = "hotwater start"; } break; } case 3: { Serial.println("hotwaterStop"); digitalWrite(4, LOW); digitalWrite(2, HIGH); break; } case 4: { Serial.print("Stoping temperature for hotwater is: "); Serial.println(hotwaterStopTemp); if(heatingActive == 1){ heatingActive = 0; next = "hotwater start"; } break; } case 5: { Serial.println("current water temperature: "); CWUTemp = map(((analogRead(A0) - 20) * 3.04), 0, 1023, -40, 125); Serial.print(CWUTemp); if(heatingActive == 1){ heatingActive = 0; next = "hotwater start"; } break; } case 6: { Serial.println("heating is starting"); digitalWrite(4, LOW); digitalWrite(2, HIGH); digitalWrite(3, HIGH); break; } case 7: { Serial.println("heating is stoping"); digitalWrite(4, LOW); digitalWrite(2, LOW); digitalWrite(3, LOW); break; } case 8: { //hotwater start temp int int temp = sRead.substring(20).toInt(); Serial.println(temp); if(temp < hotwaterStopTemp){ hotwaterStartTemp = temp; }else{ Serial.println("temperatura start musi być niższa od stop"); } if(heatingActive == 1){ heatingActive = 0; next = "hotwater start"; } break; } case 9: { // hotwater stop temp int int temp = sRead.substring(20).toInt(); Serial.println(temp); if(temp > hotwaterStartTemp){ hotwaterStopTemp = temp; }else{ Serial.println("temperatura stop musi być wyższa od start"); } if(heatingActive == 1){ heatingActive = 0; next = "hotwater start"; } break; } } } }
Editor is loading...