Keypad-Shield für den Arduino UNO

FunduinoZuletzt aktualisiert am

Display und sechs Taster ohne eine einzige Kabelverbindung

Ein LCD-Display an den Arduino zu verkabeln kostet schnell ein Dutzend Steckkabel. Das Keypad-Shield nimmt dir diese Arbeit ab: Du steckst es auf den Mikrocontroller auf, und Display sowie sechs Taster sind sofort angeschlossen.

In dieser Anleitung erfährst du, welche Pins das Shield belegt, welche dir noch bleiben und wie du die Tasten im Sketch ausliest – denn die hängen alle an einem einzigen analogen Pin.

Keypad-Shield mit blauem LCD-Display und sechs Tastern
Keypad-Shield mit 1602-Display für den Arduino UNO

Material

Für dieses Projekt brauchst du:

  • 1× Arduino UNO oder MEGA mit passendem USB-Kabel
  • 1× Keypad-Shield mit 1602-Display

Was das Keypad-Shield kann

Ein Keypad-Shield spart dir die aufwendige Verkabelung eines LCD-Displays und bringt zusätzlich sechs Taster mit. Du steckst es einfach auf den Mikrocontroller auf, und Display und Taster sind angeschlossen.

Das Besondere: Alle Taster hängen über unterschiedlich große Widerstände an einem einzigen analogen Pin – an A0. Der Sketch liest dort einen Spannungswert aus und schließt daraus, welche Taste gedrückt wurde. Weil A0 damit belegt ist, gibt es auf dem Shield auch keinen Steckplatz mehr dafür.

Keypad-Shield mit blauem LCD-Display und sechs Tastern
Keypad-Shield mit 1602-Display für den Arduino UNO

Shield aufstecken

Setze das Shield so auf den Mikrocontroller, dass die Stiftleiste für die Spannungsversorgung genau in die entsprechende Buchsenleiste des Boards greift. Ein guter Anhaltspunkt ist der Pin mit der Aufschrift VIN: Er muss auf den VIN-Pin des Arduino treffen.

Drücke das Shield gleichmäßig herunter, bis alle Stifte vollständig sitzen. Das Shield passt auf den Arduino UNO ebenso wie auf das MEGA-Board.

Welche Pins frei bleiben

Das Display belegt die digitalen Pins 4, 5, 6, 7, 8 und 9; Pin 10 steuert die Hintergrundbeleuchtung. Frei bleiben damit die digitalen Pins 0, 1, 2, 3, 11, 12 und 13.

Diese Pins sind auf dem Shield oben rechts in einer eigenen Reihe zusammengefasst. Die freien analogen Pins findest du unterhalb des Displays, jeweils einzeln beschriftet. Wenn du sie nutzen möchtest, löte dort eine Buchsenleiste auf.

Die Pins 0 und 1 sind zugleich die serielle Schnittstelle. Wenn dort etwas angeschlossen ist, schlägt das Hochladen des Sketches häufig fehl. Greife deshalb zuerst auf die Pins 2, 3, 11, 12 und 13 zurück.

Der Programmcode

Der Sketch zeigt in der ersten Zeile des Displays „Funduino GmbH“ an. In der zweiten Zeile erscheint links der Name der gerade gedrückten Taste und rechts die Laufzeit des Programms in Sekunden.

Die Bibliothek LiquidCrystal ist in der Arduino IDE bereits enthalten und muss nicht nachinstalliert werden.

Die Zahlenwerte im Programmblock Tasterstatus (50, 195, 380, 555, 790) gehören zu den Widerständen auf dem Shield. Je nach Bauserie können sie leicht abweichen. Wird eine Taste falsch erkannt, lass dir den Analogwert im Seriellen Monitor ausgeben und passe die Grenzen an.

Sketch: Tasten des Keypad-Shields auslesen
#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 ausschliesslich geprueft, welcher Taster gedrueckt 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 gedrueckt wurde.
}
// Hier wird der Programmblock "Tasterstatus" abgeschlossen.

void setup()
{
  lcd.begin(16, 2);            // Starten der Programmbibliothek.
  lcd.setCursor(0, 0);         // Cursor oben links setzen.
  lcd.print("Funduino GmbH");  // Ausgabe des Textes in der ersten Zeile.
}

void loop()
{
  lcd.setCursor(12, 1);        // Bewegt den Cursor in Zeile 2 (0 = Zeile 1, 1 = Zeile 2) an die Stelle 12.
  lcd.print(millis() / 1000);  // Zeigt die Sekunden seit dem Start des Programms an.
  lcd.setCursor(0, 1);         // Bewegt den Cursor an die Stelle 0 in Zeile 2.

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

  switch (Taster) // Abhaengig von der gedrueckten Taste wird im folgenden switch-case-Befehl entschieden, was auf dem LCD angezeigt wird.
  {
    case Tasterrechts: // Wenn die rechte Taste gedrueckt wurde ...
      {
        lcd.print("Rechts      "); // ... erscheint diese Zeile. Die Leerzeichen hinter dem Text sorgen dafuer, dass der vorherige Text in der Zeile geloescht wird.
        break;
      }
    case Tasterlinks:  // Wenn die linke Taste gedrueckt 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

Gehäuse aus dem 3D-Drucker

Anleitung bewerten

Kommentare

Frage stellen oder Erfahrung teilen

Schreib uns, wenn etwas nicht funktioniert. Nenne dabei dein Board und die Fehlermeldung.

Wir prüfen jeden Kommentar vor der Veröffentlichung. Deine E-Mail-Adresse bleibt bei uns.