Hallo

Der "Fehler" liegt wohl hier:

switch (t1 && t2 && t3){

&& ist ein logisches Und, das Ergebniss ist false wenn eines der ts false ist. Wird nun eine Taste gedrückt und alle ts sind ungleich null dann ist der Ausdruck true und GCC speichert das als 1 und case interpretiert es als Auswahl. Alles klar? So könnte es funktionieren:

if (t1 && (t1 == t2 == t3)) switch(t1){

was bedeutet: wenn t1 true ist (also ungleich 0) und t1 gleich t2 gleich t3 ist dann switche mit t1...

Ach, und mit großer MotorSpeed() die Drehrichtung ändern ist übel fürs Getriebe!

Gruß

mic