Inhaltsverzeichnis:

Verwenden von numerischen Tastenfeldern mit Arduino - Gunook
Verwenden von numerischen Tastenfeldern mit Arduino - Gunook

Video: Verwenden von numerischen Tastenfeldern mit Arduino - Gunook

Video: Verwenden von numerischen Tastenfeldern mit Arduino - Gunook
Video: BitBastelei #375 - Keypads mit Mikrocontroller/Arduino: Typen und Ansteuerung 2024, November
Anonim
Verwenden von numerischen Tastenfeldern mit Arduino
Verwenden von numerischen Tastenfeldern mit Arduino

Numerische Tastaturen können eine einfache Endbenutzer-Alternative für verschiedene Schnittstellen für Ihre Projekte darstellen. Oder wenn Sie viele Knöpfe benötigen, können sie Ihnen beim Aufbau viel Zeit sparen. Wir werden sie mit der Arduino-Bibliothek verbinden und dann mit einer nützlichen Beispielskizze abschließen.

Schritt 1: Erste Schritte

Einstieg
Einstieg

Egal woher Sie Ihre Tastaturen beziehen, stellen Sie sicher, dass Sie das Datenblatt erhalten – denn das erleichtert Ihnen die Verdrahtung. Zum Beispiel - das Bild in diesem Schritt.

Das Datenblatt ist wichtig, da es Ihnen sagt, welche Pins oder Anschlüsse auf der Tastatur für die Zeilen und Spalten sind. Wenn Sie das Datenblatt nicht haben, müssen Sie manuell bestimmen, welche Kontakte für die Zeilen und Spalten vorhanden sind.

Dies kann mit der Durchgangsfunktion eines Multimeters (dem Summer) erfolgen. Beginnen Sie damit, eine Sonde auf Pin 1, die andere Sonde auf Pin 2 zu setzen, und drücken Sie nacheinander die Tasten. Notieren Sie sich, wann ein Knopf den Stromkreis vervollständigt, und gehen Sie dann zum nächsten Pin. Bald werden Sie wissen, was was ist. Auf dem Beispiel-Tastatur sind beispielsweise die Pins 1 und 5 für die Taste „1“, 2 und 5 für „4“usw.

An dieser Stelle laden Sie bitte die Arduino-Bibliothek der Tastatur herunter und installieren Sie sie. Jetzt demonstrieren wir in einfachen Beispielen, wie Sie beide Tastaturen verwenden.

Schritt 2: Verwenden einer 12-stelligen Tastatur

Zur Anzeige verwenden wir das kleine schwarze Tastenfeld, ein Arduino Uno-kompatibel und ein LCD mit I2C-Schnittstelle. Wenn Sie kein LCD haben, können Sie den Text stattdessen immer an den seriellen Monitor senden.

Verdrahten Sie Ihr LCD und verbinden Sie dann die Tastatur wie folgt mit dem Arduino: Tastaturreihe 1 zu Arduino digital 5 Tastaturreihe 2 zu Arduino digital 4 Tastaturreihe 3 zu Arduino digital 3 Tastaturreihe 4 zu Arduino digital 2 Tastaturspalte 1 zu Arduino digital 8 Tastaturspalte 2 zu Arduino digital 7Keypad Spalte 3 bis Arduino digital 6 Wenn sich Ihre Tastatur von unserer unterscheidet, beachten Sie die Zeilen in der Skizze von:

// Definition des Tastaturtyps

Da müssen Sie die Zahlen in den Arrays rowPins[ROWS] und colPins[COLS] ändern. Sie geben die digitalen Pin-Nummern ein, die mit den Zeilen bzw. Spalten der Tastatur verbunden sind.

Darüber hinaus speichern die Array-Tasten die Werte, die auf dem LCD angezeigt werden, wenn eine bestimmte Taste gedrückt wird. Sie können sehen, dass wir es mit der verwendeten physischen Tastatur abgeglichen haben, Sie können es jedoch nach Belieben ändern. Geben Sie jedoch vorerst die folgende Skizze ein und laden Sie sie hoch, wenn Sie mit der Reihen-/Pinnummernzuordnung zufrieden sind:

/* Numerische Tastatur und I2C-LCD https://tronixstuff.com Verwendet Tastaturbibliothek für Arduino https://www.arduino.cc/playground/Code/Keypad von Mark Stanley, Alexander Brevig */

#include "Keypad.h"

#include "Wire.h" // für I2C-LCD #include "LiquidCrystal_I2C.h" // für I2C-Bus-LCD-Modul // https://www.dfrobot.com/wiki/index.php/I2C/TWI_LCD1602_Module_(SKU: _DFR0063) LiquidCrystal_I2C LCD (0x27, 16, 2); // setze die LCD-Adresse auf 0x27 für eine 16-stellige und 2-zeilige Anzeige

// Definition des Tastaturtyps

konstantes Byte ROWS = 4; // vier Zeilen const Byte COLS = 3; //dreispaltige Zeichentasten[ROWS][COLS] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'}};

Byte rowPins[ROWS] = {

5, 4, 3, 2}; // mit den Zeilenbelegungen des Tastaturbytes verbinden colPins[COLS] = { 8, 7, 6}; // mit den Spaltenpinbelegungen der Tastatur verbinden

int-Zählung = 0;

Keypad-Tastatur = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);

Void-Setup ()

{ lcd.init(); // lcd initialisieren lcd.backlight (); // LCD-Hintergrundbeleuchtung einschalten}

Leere Schleife ()

{ Zeichentaste = Tastatur.getKey(); if (Schlüssel!= NO_KEY) { lcd.print (Schlüssel); zählen++; Wenn (Anzahl = = 17) { lcd.clear (); zählen = 0; } } }

Und die Ergebnisse der Skizze werden im Video gezeigt. Jetzt können Sie also sehen, wie die Tastendrücke in Daten für die Verwendung in einer Skizze übersetzt werden können. Wir wiederholen diese Demonstration nun mit der größeren Tastatur.

Schritt 3: Verwenden einer 16-stelligen Tastatur

Wir verwenden die größere 4×4-Tastatur, ein Arduino Uno-kompatibel und zur Abwechslung das I2C-LCD von Akafugu für Anzeigezwecke. Auch wenn Sie kein LCD haben, können Sie den Text stattdessen immer an den seriellen Monitor senden. Verdrahten Sie das LCD und verbinden Sie dann die Tastatur wie folgt mit dem Arduino:

  • Tastaturreihe 1 (Pin 8) zu Arduino digital 5
  • Tastaturreihe 2 (Pin 1) zu Arduino digital 4
  • Tastaturreihe 3 (Pin 2) zu Arduino digital 3
  • Tastaturreihe 4 (Pin 4) zu Arduino digital 2
  • Tastaturspalte 1 (Pin 3) zu Arduino digital 9
  • Tastaturspalte 2 (Pin 5) zu Arduino digital 8
  • Tastaturspalte 3 (Pin 6) zu Arduino digital 7
  • Tastaturspalte 4 (Pin 7) zu Arduino digital 6

Nun zur Skizze – beachten Sie, wie wir für den größeren Ziffernblock untergebracht haben: die zusätzliche Spalte im Array char keysden zusätzlichen Pin im Array colPinsund das Byte COLS = 4.

/* Numerische Tastatur und I2C-LCD https://tronixstuff.com Verwendet Tastaturbibliothek für Arduino https://www.arduino.cc/playground/Code/Keypad von Mark Stanley, Alexander Brevig */

#include "Keypad.h"

#include "Wire.h" // für I2C-LCD #include "TWILiquidCrystal.h" // https://store.akafugu.jp/products/26 LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

konstantes Byte ROWS = 4; //vier Reihen

konstantes Byte COLS = 4; // vierspaltige Zeichentasten[ROWS][COLS] = {{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'}}; Byte rowPins[ROWS] = { 5, 4, 3, 2}; // mit den Zeilenbelegungen des Tastaturbytes verbinden colPins[COLS] = { 9, 8, 7, 6}; // mit den Spaltenpinbelegungen der Tastatur verbinden Int count = 0;

Keypad-Tastatur = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);

Void-Setup ()

{ Serial.begin (9600); lcd.begin(16, 2); lcd.print("Tastaturtest!"); Verzögerung (1000); lcd.clear(); }

Leere Schleife ()

{ Zeichentaste = Tastatur.getKey(); if (Schlüssel!= NO_KEY) { lcd.print (Schlüssel); Serial.print (Schlüssel); zählen++; Wenn (Anzahl = = 17) { lcd.clear (); zählen = 0; } } }

Und wieder seht ihr die Ergebnisse der Skizze oben im Video.

Nun zu einem Beispielprojekt, das wahrscheinlich die am häufigsten nachgefragte Verwendung des Ziffernblocks ist…

Schritt 4: Beispielprojekt – PIN-Zugangssystem

Die am häufigsten nachgefragte Verwendung für ein numerisches Tastenfeld scheint eine Anwendung im „PIN“-Stil zu sein, bei der das Arduino angewiesen wird, etwas zu tun, basierend auf einer korrekten Nummer, die in das Tastenfeld eingegeben wird. Die folgende Skizze verwendet die für die vorherige Skizze beschriebene Hardware und implementiert ein sechsstelliges PIN-Eingabesystem.

Die auszuführenden Aktionen können in die Funktionen correctPIN() und falsePIN() eingefügt werden. Und die PIN wird im Array char PIN[6] festgelegt. Mit etwas Mehraufwand können Sie auch Ihre eigene PIN-Änderungsfunktion erstellen.

// PIN-Schalter mit 16-stelligem Nummernblock // https://tronixstuff.com #include "Keypad.h" #include #include LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

konstantes Byte ROWS = 4; //vier Reihen

konstantes Byte COLS = 4; // vierspaltige Zeichentasten[ROWS][COLS] = { { '1', '2', '3', 'A' }, { '4', '5', '6', 'B' }, { '7', '8', '9', 'C' }, { '*', '0', '#', 'D' } }; Byte rowPins[ROWS] = { 5, 4, 3, 2}; // mit den Zeilenbelegungen des Tastaturbytes verbinden colPins[COLS] = { 9, 8, 7, 6}; // mit den Spaltenpinbelegungen der Tastatur verbinden

Keypad-Tastatur = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);

Zeichen-PIN[6]={

'1', '2', 'A', 'D', '5', '6'}; // unsere geheime (!) Zahl char Versuch[6]={ '0', '0', '0', '0', '0', '0'}; // zum Vergleich verwendet int z=0;

Void-Setup ()

{ Serial.begin (9600); lcd.begin(16, 2); lcd.print("PIN-Sperre"); Verzögerung (1000); lcd.clear(); lcd.print("PIN eingeben…"); }

void correctPIN() // Tun Sie dies, wenn die richtige PIN eingegeben wurde

{ lcd.print("*PIN korrigieren*"); Verzögerung (1000); lcd.clear(); lcd.print("PIN eingeben…"); }

void falsePIN() // Tun Sie dies, wenn eine falsche PIN eingegeben wurde

{ lcd.print(" * Versuchen Sie es erneut *"); Verzögerung (1000); lcd.clear(); lcd.print("PIN eingeben…"); }

PrüfPIN() ungültig

{ int richtig = 0; int ich; für (i = 0; i < 6; i++) {

if (versuch==PIN)

{ richtig++; } } if (richtig = = 6) { korrektPIN (); aufrechtzuerhalten. Sonst { falsche PIN (); }

for (int zz=0; zz<6; zz++) { Versuch[zz]='0'; } }

void readKeypad()

{ Zeichentaste = Tastatur.getKey(); if (Schlüssel != NO_KEY) { Versuch[z]=Schlüssel; z++; Schalter (Schlüssel) { Fall '*': z=0; brechen; Fall '#': z=0; Verzögerung (100); // für zusätzliche Entprellung lcd.clear(); checkPIN(); brechen; } } }

Leere Schleife ()

{ readKeypad(); }

Das Projekt wird im Video demonstriert.

Jetzt haben Sie also die Möglichkeit, Tastaturen mit zwölf und sechzehn Tasten mit Ihren Arduino-Systemen zu verwenden. Ich bin sicher, Sie werden sich in naher Zukunft mit den Tastenfeldern etwas Nützliches und Interessantes einfallen lassen.

Dieser Beitrag wird Ihnen von pmdway.com zur Verfügung gestellt – alles für Macher und Elektronik-Enthusiasten, weltweit versandkostenfrei.

Empfohlen: