Naja, zum "Absturz" sollte das häufige MotorDir() eigentlich nicht führen. Ich vermute, dein PollSwitch() funktioniert nicht richtig. Einige grüne StatusLEDs zwischen vielen Roten ergibt dann Orange. Das soll meinen: PollSwitch() erkennt einen Tastendruck obwohl keiner stattgefunden hat.