Arduino--Debug aus der Ferne

      if (millis() > (whileTime) + 4000) {    // wenn nach xxx Zeit nix kommt, aufhören sonst steht ewig hier

Diese Zeile ist anfällig für den Millis-Überlauf alle 49Tage. Hat whileTime + 4000 einen Überlauf, dann steht da eine Zahl zwischen 0 und 3999, wodurch am laufenden Band abgebrochen wird. Noch mehr solche Konstruktionen im Sketch könnte zu seltsamen Effekten führen.

Richtig ist if (millis()-(whileTime) > 4000). Hier funktioniert auch mit Überlauf alles richtig.