Dieser Drehregler ist vermutlich ein Incrementalgeber und der
erzeugt je nach Drehrichtung an 2 Pins zeitversetzte Impulse.
Am einfachsten kann man das mit einem Interrupt auswerten.
Ein Signal geht an den Interrupt Pin das andere Signal an irgend einen Portpin
Der Interrupt wird dann per Sofwatre so eingestellt, dass z.B. bei
jeder steigende Flange ein Interrupt ausgelöst wird.
In der Interrupt Funktion schaut man dann nach welchen Pegel
der andere Pin grade hat. ist er High wurde der Regler in die eine Richtung gedreht, ist er Low wurde der Regler in die andere Richtung gedreht.
Dann zählt man einfach die Impulse hoch bzw. runter.
Also im Prinzip sieht das so aus:
Interruppt Funktion: wird ausgelöst wenn der erste Pin vom Drehgeber
Seinen Pegel ändert.
Dann kommt die Abfage:
wenn Pegel am zweiten Pin = Low dann Richtung = -1
ansonsten Richtung = +1
Zählerwert = Zählerwert + Richtung
Im Prinzip war es das schon.
Siro
- - - Aktualisiert - - -
Im Prinzip kann man das auch ohne Interrupt machen: ist aber problematisch
warte bis der eine Pin von Low nach High wechselt,
dann lese schnell den Pegel des anderen Pins
ist der 2te Pin High wurde der Regler in die eine, ansonsten in die andere Richtung gedreht.
Beim schnellen Drehen kann man aber schnell auf 50 Signale pro Sekunde kommen, damit ist die Abfrage recht problemeatisch, weil man ja nie weis wann man dreht.
Deshalb der Interrupt, der kommt sofort mit wenn sich der Pegel ändert und verzweigt dann in die entsprechende Auswerte Funktion
Lesezeichen