Delay ohne delay

Jetzt hast Du den ganzen Prozess etwas komplizierter gemacht, somit funktioniert der Trick mit der Benutzung von previousMillis als Status-Speicher nicht mehr. Du musst eine Variable für den Status einführen, die festhält, in welchem Teil des Prozesses Du (oder besser Dein Arduino) gerade bist.

Du hast so etwas mit "start" und "start2" versucht, aber nicht konsequent durchgezogen. Du musst darauf achten, dass bei jedem Zeitvergleich auch der aktuelle Status verglichen wird. Zudem solltest Du den Status nicht einfach inkrementieren, sondern bewusst auf den nächsten Wert setzen. Also 0 als Startwert, wenn der Temperatur-Sensor angibt, auf 1 setzen, wenn die erste Zeitspanne verronnen ist, die Helligkeit wechseln und den Status auf 2 setzen. Wenn dann die Zeitspanne mit voller Helligkeit vorüber ist, den Status wieder auf 0 setzen, damit das Temperatur-Limit wieder aktiv wird.

Achte darauf, dass Du nach Möglichkeit für einen Prozess auch nur eine Status-Variable hast, sonst wird Dir die Komplexität schnell über den Kopf wachsen.