Nr. 29 – Analog Tastenfeld

Material: Funduino Mikrocontroller/ AD-Keyboard mit 5 Tasten / Kabel (Materialbeschaffung : www.funduinoshop.com)

In dieser Anleitung möchten wir das AD-Keyboard Modul mit fünf Tastern in Betrieb nehmen. Dabei soll jeweils der analoge Wert bei einem Tastendruck, als auch die Bezeichnung des Tasters im seriellen Monitor ausgegeben werden.

Die Verkabelung des Keyboad Moduls ist simpel. Das Modul verfügt über drei Pins.

OUT – Pin für den analogen Output, anzuschließen an Pin A0 des Mikrocontrollers
VCC – Pin für die Spannungsversorgung, anzuschließen an den 5V Pin des Mikrocontrollers
GND – GND Pin, anzuschließen an den GND-Pin des Mikrocontrollers

Die Ermittlung der jeweils betätigten Taste erfolgt durch die Auswertung des analogen Werts. Bei 5V anliegender Spannung liegt der analoge Wert bei 1023.

Sobald ein Taster gedrückt wird, verändert sich dieser Wert wie folgt :

 Betätigter Taster Analoger Wert
 Taster 1  ca. 0
 Taster 2  ca. 30
 Taster 3  ca. 85
 Taster 4  ca. 163
 Taster 5  ca. 348
nicht betätigt 1023

 

Der Sketch : 

int Taster;
int Analogwert = 0;
#define Taster1 1
#define Taster2 2
#define Taster3 3
#define Taster4 4
#define Taster5 5
#define KeinTaster 0

 
//Ab hier wird ein neuer Programmblock mit dem Namen "Tasterstatus" erstellt. Hier wird ausschließlich geprüft, welcher Taster gedrückt ist.
int Tasterabfrage()
{

Analogwert = analogRead(A0); // Auslesen des Tastermoduls am Analogen Pin A0.
Serial.println(Analogwert); //Diese Zeile sorgt dafür, dass der ausgelesene Analogwert im seriellen Monitor angezeigt wird. Das kann sinnvoll sein, wenn das Tastenmodul mit einer anderen Spannung als 5V versorgt wird, da sich daraus andere analoge Messwerte ergeben würden. Ansonsten kann diese Zeile weggelassen werden.
if (Analogwert > 1000) return KeinTaster; // Solange kein Taster gedrückt wurde, liegt der analoge Wert liegt bei 1023
if (Analogwert < 15) return Taster1; //Der analoge Wert für Taster1 beträgt ca. 0
if (Analogwert < 50) return Taster2; //Der analoge Wert für Taster2 beträgt ca. 30
if (Analogwert < 120) return Taster3; //Der analoge Wert für Taster3 beträgt ca. 85
if (Analogwert < 300) return Taster4; //Der analoge Wert für Taster4 beträgt ca. 163
if (Analogwert < 400) return Taster5; //Der analoge Wert für Taster5 beträgt ca. 348
return KeinTaster; // Ausgabe wenn kein Taster gedrückt wurde.
}
// Hier wird der Programmblock "Tasterstatus" abeschlossen.


void setup()
{
Serial.begin(9600); //Die Kommunikation mit dem seriellen Port wird gestartet. Das benötigt man, um sich den ausgelesenen Wert im serial monitor anzeigen zu lassen.
}
 
void loop()
{
Taster=Tasterabfrage(); //Hier springt der Loop in den oben angegebenen Programmabschnitt "Tasterstatus" und liest dort den gedrückten Taster aus.
if (Taster==0) Serial.println("Es wurde kein Taster gedrueckt"); // Diese Zeile kann weggelassen werden, wenn nur bei einem Tastendruck eine Ausgabe auf dem seriellen Monitor erscheinen soll.
if (Taster==1) Serial.println("Es wurde Taster 1 gedrueckt");
if (Taster==2) Serial.println("Es wurde Taster 2 gedrueckt");
if (Taster==3) Serial.println("Es wurde Taster 3 gedrueckt");
if (Taster==4) Serial.println("Es wurde Taster 4 gedrueckt");
if (Taster==5) Serial.println("Es wurde Taster 5 gedrueckt");
} //Loop beenden