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+

Kepler Ultimate Kit

Die Teile können aber auch einzeln über die untenstehenden Links gekauft werden.

SN

KOMPONENTENÜBERSICHT

ANZAHL

KAUF-LINK

1

Den Pico W kennenlernen

1

KAUFEN

2

Micro-USB-Kabel

1

3

Steckbrett

1

KAUFEN

4

Jumperkabel

Mehrere

KAUFEN

5

Widerstand

4(10KΩ)

KAUFEN

6

4x4 Tastenfeld

1

KAUFEN

Schaltplan

sch_keypad_ar

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

wiring_keypad_ar

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 Verzeichnis kepler-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.

    ../_images/lib_ad_keypad.png

Nach dem Ausführen des Programms wird die Shell die Tasten ausgeben, die Sie auf dem Tastenfeld gedrückt haben.

Funktionsweise

  1. 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"
    
  2. 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 und COLS definieren die Abmessungen des Tastenfelds.

    • keys ist ein 2D-Array, das die Bezeichnung für jede Taste auf dem Tastenfeld speichert.

    • rowPins und colPins sind Arrays, die die Arduino-Pins speichern, die mit den Reihen und Spalten des Tastenfelds verbunden sind.


  3. Initialisierung des Tastenfelds

    Erstelle eine Instanz von Adafruit_Keypad mit dem Namen myKeypad und initialisiere sie.

    Adafruit_Keypad myKeypad = Adafruit_Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
    
  4. setup() Funktion

    Initialisiere die serielle Kommunikation und das benutzerdefinierte Tastenfeld.

    void setup() {
      Serial.begin(9600);
      myKeypad.begin();
    }
    
  5. 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);
    }