Zitat Zitat von Blamaster
Hi,

die If Abfrage stimmt so schon.
Nein, die If-Abfrage macht nicht das, was du möchtest.
Stell dir vor, M_pointer steht auf 0 und du drehst links.
Da M_pointer < 5 ist, wird Decr M_pointer ausgeführt.
Damit wird M_pointer=-1 oder 255, je nachdem, welcher Typ es ist.
Egal was, kein Case wird zutreffen.
Wenn M_pointer=4 ist und du drehst rechts, wird M_pointer auf 5 gesetzt, weil es vorher < 5 war. Auch in diesem Fall trifft kein Fall zu.
Deine Abfragen müssten also <4 und >1 sein.

Beides erklärt aber dein 2-fach Problem noch nicht.
Hast du die PullUps eingeschaltet oder extern welche dran?

Gruß

Rolf