Ist denn die Heiz-logik richtig? also: heaterPin HIGH bedeutet heizen?
ansonsten hilft mir immer recht gut, wenn ich mir die Kenngrößen im Sermon ausgeben lassen und die dann im Excel als Grafik ansehe.
Diesen Code in die loop(), der gibt alle 100ms die Kennwerte aus, Tabgetrennt.
static unsigned long TS;
if (millis() -TS > 100){
TS = millis();
Serial.print(Input); Serial.print("\t");
Serial.print(Output); Serial.print("\t");
Serial.print(Setpoint); Serial.println();
}
Den Inhalt vom Monitor kannst du dann ins Excel kopieren und dir die Kurven ansehen. Dann erkennst du auch, ob der Regler schwingt.