Nr.04 – Tastenfeld

Inhaltsverzeichnis

Ein 3x4 Tastenfeld am Arduino verwenden

Aufgabe: Mit dem Arduino soll ein Keypad (Tastenfeld) ausgelesen und die gedrückte Taste am seriellen Monitor angezeigt werden.

Tastenfeld am Arduino/Funduino

Bei dieser Anleitung wird ein 3 × 4 Tastenfeld benutzt. Alternativ kann auch ein 4 × 4 Tastenfeld verwendet werden, hierbei müssen die Pins und die definierten Tasten (COLS/hexaKeys) angepasst werden (s.u.).

Um mit dem Keypad arbeiten zu können, benötigt man eine Library, welche noch nicht im Arduino Programm vorinstalliert ist. Für diese Anleitung verwenden wir die Library „Keypad“ von Mark Stanley und Alexander Brevig. Die Library kann über die Bibliotheksverwaltung der Arduino-Software hinzugefügt werden. Als Suchbegriff verwendet man den Namen „Keypad“. Eine detaillierte Beschreibung, wie Bibliotheken eingefügt werden, findet man im Theorieteil zu dieser Anleitung im Unterpunkt „Bibliotheken zur Arduino-Software hinzufügen“.

Das Tastenfeld besteht aus einem 3 × 4 Tasten großem Feld mit 12 Tasten, oder einem 4 × 4 Tasten großem Feld mit 16 Tasten. Um die Funktionsweise zu verstehen, muss man sich das Keypad wie ein Koordinatensystem vorstellen. Jede Taste ist mit zwei Pins verbunden; ein Pin für die Spalten (COLS) und einer für die Zeilen (ROWS). Wird eine Taste gedrückt, werden die entsprechenden Pins miteinander verbunden. Diese Pins werden vom Arduino-Mikrocontroller mit der digitalRead() Funktion ausgelesen, jedoch findet diese Abfrage durch die Nutzung der Library versteckt statt und muss nicht separat vorgenommen werden. Wie auch bei der Nutzung anderer Libraries, bleibt der Sketch dadurch übersichtlicher.

Der Programmcode

#include <Keypad.h>
//Hier wird die größe des Keypads definiert
const byte COLS = 3; //3 Spalten
const byte ROWS = 4; //4 Zeilen
//Die Ziffern/Zeichen:
char hexaKeys[ROWS][COLS]={
{'#','0','*'},
{'9','8','7'},
{'6','5','4'},
{'3','2','1'}
};
byte colPins[COLS] = { 8, 7, 6 }; //Definition der Pins für die 3 Spalten
byte rowPins[ROWS] = { 5, 4, 3, 2 };//Definition der Pins für die 4 Zeilen
char Taste; //pressedKey entspricht in Zukunft den gedrückten Tasten
Keypad Tastenfeld = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); //Das Keypad kann absofort mit myKeypad angesprochen werden
void setup() {
Serial.begin(9600);
}

void loop() {
Taste = Tastenfeld.getKey(); //pressedKey entspricht der gedrückten Taste
if (Taste) { //Wenn eine Taste gedrückt wurde
Serial.print("Die Taste ");
Serial.print(Taste);
Serial.print("wurde gedrueckt");
Serial.println(); //Teile uns am Serial Monitor die gedrückte Taste mit
}
}

Verwendung eines 4×4 Tastenfeldes

Für das 4 × 4 Tastenfeld wird ein anderer Aufbau mit einer anderen Verkabelung benötigt.

Der Schaltplan

Fritzing Skizze Schaltplan - Tatenfeld am Arduino

Der Programmcode

#include <Keypad.h>
//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(); //Mit Unter der Variablen pressedKey entspricht der gedrückten Taste
if (Taste) 
 { //Wenn eine Taste gedrückt wurde
 Serial.print("Die Taste ");
 Serial.print(Taste);
 Serial.print(" wurde gedrueckt");
 Serial.println(); //Teile uns am Serial Monitor die gedrückte Taste mit
}
}

So sollte es aussehen, wenn alles gelungen ist:

Funduino - Dein Onlineshop für Mikroelektronik

  • Dauerhaft 10% Rabatt für Schüler, Studenten und Lehrkräfte
  • Mehr als 3.500 Artikel sofort verfügbar!
  • Über 8 Jahre Erfahrung mit Arduino, 3D-Druck und co.
SALE