Für dieses Projekt brauchst du

 

 

Ein 4x4-Tastenfeld mit dem Arduino benutzen

Aufgabe:
Mit dem Arduino soll ein Tastenfeld gelesen werden. Die gedrückte Taste soll im seriellen Monitor angezeigt werden.

Was du brauchst:
Ein Tastenfeld mit 3×4 oder 4×4 Tasten.

Library installieren:
Damit das Tastenfeld mit dem Arduino funktioniert, brauchst du eine extra Library. Diese Library heißt „Keypad“ und wurde von Mark Stanley und Alexander Brevig erstellt.
Die Library ist nicht automatisch im Arduino-Programm. Du kannst sie aber einfach über die Bibliotheksverwaltung suchen und installieren. Gib dazu in der Suche „Keypad“ ein.
Eine genaue Anleitung zur Installation findest du im Theorieteil unter „Bibliotheken zur Arduino-Software hinzufügen“.

Wie das Tastenfeld funktioniert:
Das Tastenfeld hat entweder 12 Tasten (3×4) oder 16 Tasten (4×4).
Man kann es sich wie ein Koordinatensystem vorstellen:

  • Jede Taste ist mit zwei Pins verbunden – einer für die Zeilen (ROWS) und einer für die Spalten (COLS).

  • Wenn du eine Taste drückst, werden die passenden Pins verbunden.

  • Der Arduino liest diese Pins mit der Funktion digitalRead() aus.

  • Die Library übernimmt diesen Vorgang für dich, deshalb musst du das nicht selbst programmieren.

Mit der Library bleibt dein Code einfacher und übersichtlicher.

 

Der Schaltplan

Der Programmcode

#include    //Hier wird die größe des Keypads definiert

const byte COLS = 4;  //4 Spalten

const byte ROWS = 4;  //4 Zeilen //Die Ziffern und Zeichen des Keypads werden eingegeben:

char hexaKeys[ROWS][COLS] = {

  { ‚D‘, ‚#‘, ‚0‘, ‚*‘ },

  { ‚C‘, ‚9‘, ‚8‘, ‚7‘ },

  { ‚B‘, ‚6‘, ‚5‘, ‚4‘ },

  { ‚A‘, ‚3‘, ‚2‘, ‚1‘ }

};

byte colPins[COLS] = { 2, 3, 4, 5 };                                             //Definition der Pins für die 4 Spalten

byte rowPins[ROWS] = { 6, 7, 8, 9 };                                             //Definition der Pins für die 4 Zeilen

char Taste;                                                                      //Taste ist die Variable für die jeweils gedrückte Taste.

Keypad Tastenfeld = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);  //Das

Keypad kann absofort mit „Tastenfeld“ angesprochen werden.void setup() {

  Serial.begin(9600);

}

void loop() {

  Taste = Tastenfeld.getKey();  //Unter der Variablen „Taste“ wird die gedrückte Taste

  gespeichert.if (Taste) {      //Wenn eine Taste gedrückt wurde Serial.print(„Die Taste „);

    Serial.print(Taste);

    Serial.print(“ wurde gedrueckt“);

    Serial.println();  //Teile uns am Seriellen Monitor die gedrückte Taste mit

    delay(200);        // Kurze Pause, damit eine Taste nicht mehrfach angezeigt wird

  }

}

Verwendung eines 3×4 Tastenfeldes

Der Schaltplan

     

Der Programmcode

#include   // Die Keypad-Bibliothek wird eingebunden

const byte ROWS = 4;  // 4 Zeilen
const byte COLS = 3;  // 3 Spalten

// Tastenbelegung des 3x4-Keypads
char hexaKeys[ROWS][COLS] = {
  { '1', '2', '3' },
  { '4', '5', '6' },
  { '7', '8', '9' },
  { '*', '0', '#' }
};

// Die Pins am Arduino, die mit den Zeilen des Keypads verbunden sind
byte rowPins[ROWS] = { 3, 4, 5, 6 };  // Zeilen-Pins (R1–R4)

// Die Pins am Arduino, die mit den Spalten des Keypads verbunden sind
byte colPins[COLS] = { 7, 8, 9 };     // Spalten-Pins (C1–C3)

// Die gedrückte Taste wird hier gespeichert
char Taste;

// Das Keypad wird initialisiert
Keypad Tastenfeld = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);

void setup() {
  Serial.begin(9600);  // Serielle Schnittstelle wird gestartet
}

void loop() {
  Taste = Tastenfeld.getKey();  // Eine Taste wird ausgelesen

  if (Taste) {  // Wenn eine Taste gedrückt wurde
    Serial.print("Die Taste ");
    Serial.print(Taste);
    Serial.println(" wurde gedrueckt");
    delay(200);  // Kurze Pause, um Mehrfachauslösungen zu vermeiden
  }
}