allora, prima di tutto prima di caricare il codice sul forum per favore fai tools->auto format
perchè come è scritto ora è illeggibile e fa passare la voglia di leggerlo al primo sgurado, guardiamo il loop() formattato decentemete:
void loop() {
time = millis();
sensors.requestTemperatures();
Input = sensors.getTempCByIndex(0);
Serial.print(" temperatura ");
Serial.print(Input);
lcd.setCursor(7, 0);
lcd.print(" TE ");
lcd.setCursor(11, 0);
lcd.print(Input);
myPID.Compute();
/************************************************
* turn the output pin on/off based on pid output
************************************************/
if (millis() - windowStartTime > WindowSize)
{ //time to shift the Relay Window
windowStartTime += WindowSize;
}
if (Output < millis() - windowStartTime) digitalWrite(RelayPin, HIGH), lcd.setCursor(5, 1), lcd.print("T 1");
else digitalWrite(RelayPin, LOW), lcd.setCursor(5, 1), lcd.print("T 0");;
Serial.print(" output ");
Serial.print(Output);
wdt_reset();
loop_time = millis();
tempoloop = loop_time - time;
Serial.print(" ");
Serial.println(tempoloop);
}
ora vorrei che mi spiegassi cosa cosa fai qui:
if (Output < millis() - windowStartTime){
digitalWrite(RelayPin, HIGH);
lcd.setCursor(5, 1);
lcd.print("T 1");
}else{
digitalWrite(RelayPin, LOW);
lcd.setCursor(5, 1);
lcd.print("T 0");;
}
Serial.print(" output ");
Serial.print(Output);