Bemerkung
Hallo und willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Gemeinschaft auf Facebook! Tauchen Sie tiefer ein in die Welt von Raspberry Pi, Arduino und ESP32 mit anderen Enthusiasten.
Warum beitreten?
Expertenunterstützung: Lösen Sie Nachverkaufsprobleme und technische Herausforderungen mit Hilfe unserer Gemeinschaft und unseres Teams.
Lernen & Teilen: Tauschen Sie Tipps und Anleitungen aus, um Ihre Fähigkeiten zu verbessern.
Exklusive Vorschauen: Erhalten Sie frühzeitigen Zugang zu neuen Produktankündigungen und exklusiven Einblicken.
Spezialrabatte: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte.
Festliche Aktionen und Gewinnspiele: Nehmen Sie an Gewinnspielen und Feiertagsaktionen teil.
👉 Sind Sie bereit, mit uns zu erkunden und zu erschaffen? Klicken Sie auf [hier] und treten Sie heute bei!
4.2 - 4x4 Tastenfeld
Das 4x4-Tastenfeld, auch als Matrix-Tastenfeld bekannt, besteht aus einer Matrix von 16 Tasten, die in einer einzigen Bedienoberfläche integriert sind.
Solche Tastenfelder findet man vor allem bei Geräten, die digitale Eingaben erfordern, wie zum Beispiel Taschenrechner, Fernbedienungen, Tastentelefone, Verkaufsautomaten, Geldautomaten, Zahlenschlösser und elektronische Türschlösser.
In diesem Projekt lernen wir, wie man ermittelt, welche Taste gedrückt wurde und den entsprechenden Tastenwert erhält.
Benötigte Komponenten
Für dieses Projekt benötigen wir die folgenden Bauteile.
Es ist natürlich praktisch, ein komplettes Set zu kaufen. Hier ist der Link:
Name |
ARTIKEL IN DIESEM SET |
KAUF-LINK |
---|---|---|
Kepler Kit |
450+ |
Die Teile können aber auch einzeln über die untenstehenden Links gekauft werden.
SN |
KOMPONENTENÜBERSICHT |
ANZAHL |
KAUF-LINK |
---|---|---|---|
1 |
1 |
||
2 |
Micro-USB-Kabel |
1 |
|
3 |
1 |
||
4 |
Mehrere |
||
5 |
4(10KΩ) |
||
6 |
1 |
Schaltplan
Vier Pull-down-Widerstände sind mit den jeweiligen Spalten des Matrix-Tastenfelds verbunden, damit G6 ~ G9 einen stabilen niedrigen Pegel erhalten, wenn keine Taste gedrückt ist.
Die Reihen des Tastenfelds (G2 ~ G5) sind so programmiert, dass sie einen hohen Pegel haben. Wird einer der Anschlüsse G6 ~ G9 als hoch gelesen, wissen wir, welche Taste gedrückt wurde.
Zum Beispiel wird bei einem hohen Signal auf G6 die Taste mit der Nummer 1 gedrückt; dies ist darauf zurückzuführen, dass die Steuerpins dieser Taste G2 und G6 sind. Wenn die Taste gedrückt wird, werden G2 und G6 miteinander verbunden und G6 ist ebenfalls hoch.
Verdrahtung
Um die Verdrahtung zu vereinfachen, sind im obigen Schema die Spalte und die Reihe des Matrix-Tastenfelds sowie die 10K-Widerstände gleichzeitig in die Löcher eingesteckt, in denen sich G6 ~ G9 befinden.
Code
Bemerkung
Die Datei
4.2_4x4_keypad.ino
finden Sie im Verzeichniskepler-kit-main/arduino/4.2_4x4_keypad
.Oder kopieren Sie diesen Code in die Arduino IDE.
Vergessen Sie nicht, das Board (Raspberry Pi Pico) und den korrekten Port auszuwählen, bevor Sie auf die Schaltfläche Hochladen klicken.
Die Bibliothek
Adafruit Keypad
wird hier verwendet. Sie können sie über den Bibliotheksmanager installieren.
Nach dem Ausführen des Programms wird die Shell die Tasten ausgeben, die Sie auf dem Tastenfeld gedrückt haben.
Funktionsweise
Einbinden der Bibliothek
Wir beginnen mit der Einbindung der Bibliothek
Adafruit_Keypad
, die uns eine einfache Schnittstelle zum Tastenfeld ermöglicht.#include "Adafruit_Keypad.h"
Tastenfeldkonfiguration
const byte ROWS = 4; const byte COLS = 4; char keys[ROWS][COLS] = { { '1', '2', '3', 'A' }, { '4', '5', '6', 'B' }, { '7', '8', '9', 'C' }, { '*', '0', '#', 'D' } }; byte rowPins[ROWS] = { 2, 3, 4, 5 }; byte colPins[COLS] = { 8, 9, 10, 11 };
Die Konstanten
ROWS
undCOLS
definieren die Abmessungen des Tastenfelds.keys
ist ein 2D-Array, das die Bezeichnung für jede Taste auf dem Tastenfeld speichert.rowPins
undcolPins
sind Arrays, die die Arduino-Pins speichern, die mit den Reihen und Spalten des Tastenfelds verbunden sind.
Initialisierung des Tastenfelds
Erstelle eine Instanz von
Adafruit_Keypad
mit dem NamenmyKeypad
und initialisiere sie.Adafruit_Keypad myKeypad = Adafruit_Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
setup() Funktion
Initialisiere die serielle Kommunikation und das benutzerdefinierte Tastenfeld.
void setup() { Serial.begin(9600); myKeypad.begin(); }
Hauptschleife
Überprüfe Tastenereignisse und zeige sie im seriellen Monitor an.
void loop() { myKeypad.tick(); while (myKeypad.available()) { keypadEvent e = myKeypad.read(); Serial.print((char)e.bit.KEY); if (e.bit.EVENT == KEY_JUST_PRESSED) Serial.println(" pressed"); else if (e.bit.EVENT == KEY_JUST_RELEASED) Serial.println(" released"); } delay(10); }