Zurück zum Menü 5 5.0.7 Tastatur pollen Erstellt ab 15.01.2022 |
Ich
hatte gerade an meiner Bastel-Tastatur für
meinen Laserplotter gebaut und das
Ergebnis meinem Sohn vorgestellt. Er
stellte die interessante Frage "und wie
willst du das in den Controller einlesen
?". Also habe ich mich entschlossen, jeden Taster einzeln abzufragen. Dazu führt jede Taste auf einen Eingang des Controllers und dieser Controller fragt dann einen Eingang nach dem anderen ab, ob dort eine "1" oder eine "0" anliegt.
Wie wir sehen, ist es auch möglich noch zusätzlich etwa ein Poti oder auch einen anderen analogen Wert einzulesen. Polling bedeutet nun dies: Es wird nun der Reihe nach jeder einzelne Eingang abgefragt und einer Variablen zugewiesen. Das kann man durch eine Reihe von If-Then-Befehlen erreichen. Es kann sofort eine jeweilige Aktion erfolgen, oder man liest erst alle Eingänge z.B. in ein Byte ein und aus dem Byte-Wert ergibt sich dann jeweils die Aktion. Da jeder If-Then-Befehl eine gewisse Zeit zur Ausführung benötigt, gilt das Polling als langsames Verfahren. Hier gilt es abzuwägen, eventuell mit einem Interrupt zu arbeiten, wenn es zeitkritische Dinge zu tun gibt. Aber bei einer Tastaturmatrix mit Handbedienung ist bei 7 Tasten keinerlei Zeitnot. Manchmal hat man aber nicht genügend Pins als Eingang zur Verfügung. Um Leitungen und Pins zu sparen, kann man einen Spannungsteiler aus den Tasten verdrahten und nur noch die je nach Taste resultierende Spannung an einen ADC-Eingang geben. Bei dem vorliegenden Beispiel ergäbe sich vielleicht dieses Schaltbild: Je nach gedrücktem Taster haben wir jetzt also einen anderen Spannungsteiler aktiviert. Aber auch hier muss gepollt werden, in dem man ADC1 und ADC2 nacheinander abfragt. Der Nachteil bei
dieser Schaltungsvariante ist, dass man die
Schaltung ein mal kalibrieren muss. Jedem
Tastendruck ist dann genau ein Analogwert
zugeordnet. Zusätzlich empfhiehlt es sich,
eine Art Hysterese einzubauen, falls die
Umgebungstemperatur schwankt und sich somit
die Analogwerte etwas verstellen könnten.
![]() |
|