Armins AVR-Buch - Drehencoder_auswerten

Zuletzt geändert am 09.12.2023, 17:23:39

Drehencoder_auswerten


(armin77, 01.01.2013, 19:01:59)

Mit einem Drehencoder kann man professionelle Menüsteuerungen erstellen.
Dieser gibt zeitversetzt an den Anschlüssen A und B Taktimpulse aus, sodaß
man Richtung (links/rechts) und Anzahl der Taktimpulse bestimmmen kann.
Der Anschluß C wird mit GND verbunden.

Hier einmal eine Grundschaltung um zu verstehen wie der Drehencoder funktioniert

Bild encoder45.JPG

Jeweils eine LED (low current) wird mit Vorwiderstand an Anschluß A und B angeschlossen.
Anschluß C an Masse.
Wenn man den Drehencoder langsam dreht spürt man einen 'Hügel'.
Kurz darauf leuchtet eine der beiden LEDs auf.
Wird der Encoder sehr langsam weiter gedreht, geht auch die zweite Leuchtdiode an.
Kurz darauf verlischt die erste Leuchtdiode wieder und dann auch die zweite.
Je nach Richtung beginnt LED1 oder LED2 als erstes an zu leuchten.

Hier der Anschluß des Encoders an den ATMega8

Bild dreh.JPG

Hier ein Beispielcode zum Auswerten des Drehencoders:

$regfile = "m8def.dat"
$crystal = 1000000
$hwstack=40
$swstack=16
$framesize=32

Dim Zustand As Byte
Dim Zahl As Word

Config Portb.0 = Input
Config Portb.1 = Input

Portb.0 = 1
Portb.1 = 1

Do

Zustand = Encoder(pinb.0 , Pinb.1 , Links , Rechts)

Loop

Links:
Incr Zahl
Return

Rechts:
Decr Zahl
Return


An Portb.0 ist Anschluß A und an Portb.1 Anschluß B des Encoders angeschlossen.
Anschluß C des Encoders geht auf Masse.
In Bascom deklarieren wir die Ports B.0 und B.1 als Eingänge
und aktivieren den internen Pull-Up Widerstand.
Dann werten wir mit dem Encoder Befehl den Impulsgeber aus und
springen entsprechend in die Unterprogramme Rechts oder Links.
Hier kann man eine Zahl hochzählen oder etwas anzeigen lassen.