Tastenfeld

Inhaltsverzeichnis

Für dieses Projekt benötigst du

Ein 4x4 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

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 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();  //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

const byte COLS = 3; //3 Spalten

byte colPins[COLS] = { 8, 7, 6 }; //Definition der Pins für die 3 Spalten

char hexaKeys[ROWS][COLS] = {

{‚#‘,’0′,’*‘},

{‚9‘,’8′,’7′},

{‚6‘,’5′,’4′},

{‚3‘,’2′,’1′}

};

Der Programmcode

So sollte es aussehen, wenn alles gelungen ist:

Funduino - Dein Onlineshop für Mikroelektronik

  • Dauerhaft bis zu 10 % Rabatt für Schüler, Studenten und Lehrkräfte
  • Mehr als 4.000 Artikel sofort verfügbar!
  • Mehr als 10 Jahre Erfahrung mit Arduino, 3D-Druck und co.
SALE
Benötigst du Unterstützung bei deinem Projekt?

Alle Modelle der hier gezeigten Modelle sind hier zum Download  in einer kompakten Zip Datei verfügbar.