Benötigte Komponenten
- Arduino UNO R3 kompatibles Board
- 4x4 Keypad Modul
- Buzzer
- 220 Ohm Widerstand
- 11 Jumperkabel
- Breadboard
Beschreibung
Tastenfelder oder Keypads eignen sich perfekt zur Dateneingabe oder Menü-Navigation in Projekten wie Sicherheitssysteme, Zugangskontrollen, Embedded Systems, Smart Home Steuerungen, Fernbedienungen und Robotern. Die Einsatzmöglichkeiten sind unbegrenzt, da die Tasten nicht unbedingt die aufgedruckten Zeichen ausgeben müssen, sondern mit Hilfe eines Arduinos oder Raspberry Pis frei programmiert werden können. Am beliebtesten sind Tastenfelder mit 4x3 oder 4x4 Tasten, die einer klassischen Telefontastatur ähneln.
Funktionsweise
Das numerische Tastenfeld besteht aus 16 Tasten, die in einer Matrix angeordnet sind, d. h. alle Tasten einer Spalte sind mit einem Eingang und alle Tasten einer Zeile mit einem anderen verbunden.
Wenn eine Taste gedrückt wird, wird der entsprechende Eingang der Zeile mit dem der Spalte verbunden, wodurch der Stromkreis geschlossen wird. Der Vorteil dieses Aufbaus ist, dass 16 Tasten mit nur 8 Eingängen des Mikrocontrollers angesteuert werden können.
Schaltplan
Pinbelegung
Keypad | Arduino |
C1 | Pin 9 |
C2 | Pin 8 |
C3 | Pin 7 |
C4 | Pin 6 |
L1 | Pin 5 |
L2 | Pin 4 |
L3 | Pin 3 |
L4 | Pin 2 |
Anschlussplan
Code für Arduino
Zur Verwendung von diesem Beispielcode wird die Keypad.h Bibliothek benötigt.
Mit diesem Beispiel können Sie eine Taste drücken und die gedrückte Taste im seriellen Monitor der Arduino IDE auslesen. Die Taste 1 lässt die LED aufleuchten und die Taste 2 betätigt den Buzzer.
#include <Keypad.h>
int led = 10;
int buzzer = 11;
const byte ROWS = 4; // Definiere vier Reihen
const byte COLS = 4; // Definiere vier Spalten
char keys[ROWS][COLS] = {
{'4','8','C','G'},
{'3','7','B','F'},
{'2','6','A','E'},
{'1','5','9','D'}
};
byte rowPins[ROWS] = {9,8,7,6}; // Pins fuer die Reihen
byte colPins[COLS] = {5,4,3,2}; // Pins fuer die Spalten
// Initialisiere Keypad Bibliothek
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); void setup(){
Serial.begin(9600); pinMode(led, OUTPUT); pinMode(buzzer, OUTPUT);
}