Nr.01 – Keypad Shield

Keypadshield mit Arduino betreiben

Ein Keypadshield hat den Vorteil, dass man das LCD Display nicht in komplizierter Weise verkabeln muss und dass man zusätzlich sechs Taster hat, die man verwenden kann. Das besondere liegt bei den Tasten darin, dass sie im Programmcode alle über einen analogen Pin ausgelesen werden können. Denn die Taster sind über unterschiedliche Widerstände alle mit einem analogen Pin (A0) verbunden. Der Pin A0 kann daher nur eingeschränkt für andere Dinge verwendet werden. Aus dem Grund befindet sich auf dem Shield auch kein Steckplatz für den A0-Pin.

Die freien digitalen Pins sind 13, 12, 11, 3, 2, 1 und 0. Diese können auf dem Shield oben rechts  in der Ecke angeschlossen werden. Dazu sollte eine Buchsenleiste aufgelötet werden. Die freien analogen Pins befinden sich unterhalb des LCD und sind einzeln beschriftet. Wenn man diese Steckplätze verwenden möchte, sollte man dort Kabelbuchsen auflöten.

 

Als Sketch kann der folgende verwendet werden:

#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7); //Angabe der erforderlichen Pins
 
// erstellen einiger Variablen
int Taster = 0;
int Analogwert = 0;
#define Tasterrechts 0
#define Tasteroben 1
#define Tasterunten 2
#define Tasterlinks 3
#define Tasterselect 4
#define KeinTaster 5

 
// Ab hier wird ein neuer Programmblock mit dem Namen "Tasterstatus" erstellt. Hier wird ausschließlich ausschließlich geprüft, welcher Taster gedrückt ist.
int Tasterstatus()
{
Analogwert = analogRead(A0); // Auslesen der Taster am Analogen Pin A0.
if (Analogwert > 1000) return KeinTaster;
if (Analogwert < 50) return Tasterrechts;
if (Analogwert < 195) return Tasteroben;
if (Analogwert < 380) return Tasterunten;
if (Analogwert < 555) return Tasterlinks;
if (Analogwert < 790) return Tasterselect;
 
return KeinTaster; // Ausgabe wenn kein Taster gedrückt wurde.
}
// Hier wird der Programmblock "Tasterstatus" abeschlossen.


void setup()
{
lcd.begin(16, 2); // Starten der Programmbibliothek.
lcd.setCursor(0,0); // Angabe des Cursorstartpunktes oben links.
lcd.print("Funduino GmbH"); // Ausgabe des Textes "Nachricht".
}
 
void loop()
{
lcd.setCursor(12,1); // Bewegt den Cursor in Zeile 2 (Line0=Zeile1 und Line1=Zeile2) and die Stelle "12".
lcd.print(millis()/1000); // Zeigt die Sekunden seit Start des Programms in Sekunden an.
lcd.setCursor(0,1); // Bewegt den Cursor and die Stelle "0" in Zeile 2.

Taster = Tasterstatus(); //Hier springt der Loop in den oben angegebenen Programmabschnitt "Tasterstatus" und liest dort den gedrückten Taster aus.

switch (Taster) // Abhängig von der gedrückten Taste wird in dem folgenden switch-case Befehl entschieden, was auf dem LCD angezeigt wird.
{
case Tasterrechts: // Wenn die rechte Taste gedrückt wurde...
{
lcd.print("Rechts      "); //Erscheint diese Zeile. Die Leerzeichen hinter dem Text sorgen dafür, dass der vorherige Text in der Zeile gelöscht wird.
break;
}
case Tasterlinks:  // Wenn die linke Taste gedrückt wurde...
{
lcd.print("Links       ");  //Erscheint diese Zeile... usw...
break;
}
case Tasteroben:
{
lcd.print("Oben        ");
break;
}
case Tasterunten:
{
lcd.print("Unten       ");
break;
}
case Tasterselect:
{
lcd.print("SELECT      ");
break;
}
case KeinTaster:
{
lcd.print("Keine Taste ");
break;
}
} //switch-case Befehl beenden
} //Loop beenden