ma stai scherzando io che faccio il copia incolla.... :*
comunque l'ho scaricato da questo sito Arduino Playground - PIDLibraryRelayOutputExample
In teoria dovrebbe gestire l'attivazione e disattivazione del relay, tieni presente che al momento utilizzo un normale non quello a stato solido,
/************************************************
* turn the output pin on/off based on pid output
************************************************/
if (millis() - windowStartTime > WindowSize)
{ //time to shift the Relay Window
windowStartTime += WindowSize;
}
qui passati 5000 ms imposta il nuovo "windowsStartTime" che è la partenza per il nuovo intervallo di tempo in cui il relay dovrebbe essere acceso o spento per il tempo che verrà indicato sotto.
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");;
Premetto che non so che valore possa avere "Output"
se l'output fosse 3000 ms in questo caso verifica se sono passati questi 3 secondi ed accende il relay altrimenti resta spento.
Ho visto ora ma non ho tempo per provarlo, può essere il problema che ci sono due ; consecutivi nel codice
else digitalWrite(RelayPin, LOW), lcd.setCursor(5, 1), lcd.print("T 0");;