Termostato per incubatrice

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");;