Für dieses Projekt brauchst du
- 1* Mikrocontroller mit passendem USB-Kabel
- 1* Tastenfeld 3×4
- 1* Tastenfeld 4×4
- 40* Steckkabel männlich/männlich
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
}
}