Wo liegt mein Denkfehler?
In der Annahme, PollSwitch() liefert immer korrekte Werte. Deine
Code:
while (!switched)
-Schleife wird bei der geringsten Fehllesung der Taster beendet! Zur Fehlersuche kannst du ja mal den Wert speichern (und zum Terminal senden) der zum Abbruch der Schleife führte. Abhilfe schafft vielleicht eine Mehrfachabfrage und Prüfung auf Gleichheit mehrerer PollSwitch()-Werte.