Bemerkung

Hallo, willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Community auf Facebook! Tauchen Sie tiefer in die Welt des Raspberry Pi, Arduino und ESP32 ein mit Gleichgesinnten.

Warum beitreten?

  • Expertenunterstützung: Lösen Sie nach dem Verkauf aufkommende Probleme und technische Herausforderungen mit Hilfe unserer Gemeinschaft und unseres Teams.

  • Lernen & Teilen: Austausch von Tipps und Tutorials zur Verbesserung Ihrer Fähigkeiten.

  • Exklusive Vorschauen: Erhalten Sie frühzeitigen Zugang zu neuen Produktankündigungen und exklusiven Einblicken.

  • Spezielle Rabatte: 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 kreieren? Klicken Sie auf [hier] und treten Sie noch heute bei!

4.2 Nutzung eines 4x4-Tastenfelds

In dieser Lektion lernen wir, wie man ein 4x4-Matrix-Tastenfeld mit dem Raspberry Pi Pico 2 verbindet, um zu erkennen, welche Tasten gedrückt werden. Matrix-Tastaturen werden häufig in Geräten wie Taschenrechnern, Telefonen, Verkaufsautomaten und Sicherheitssystemen für die numerische Eingabe verwendet.

Was Sie benötigen

Für dieses Projekt benötigen wir die folgenden Komponenten.

Es ist definitiv praktisch, ein ganzes Kit zu kaufen, hier ist der Link:

Name

ITEMS IN THIS KIT

LINK

Newton Lab Kit

450+

Newton Lab Kit

Sie können sie auch einzeln über die untenstehenden Links kaufen.

SN

COMPONENT

QUANTITY

LINK

1

Raspberry Pi Pico 2

1

KAUFEN

2

Micro-USB-Kabel

1

3

Steckbrett

1

KAUFEN

4

Jumperkabel

Mehrere

KAUFEN

5

4x4-Tastenfeld

1

KAUFEN

Verständnis des 4x4-Tastenfelds

Ein 4x4-Tastenfeld besteht aus:

  • 16 Tasten, angeordnet in 4 Reihen und 4 Spalten.

  • 8 Pins: 4 verbunden mit den Reihen und 4 mit den Spalten.

Wenn Sie eine Taste drücken, wird eine spezifische Reihe und Spalte verbunden, was es uns ermöglicht, die Taste basierend auf den Reihen- und Spaltennummern zu identifizieren.

So sind die Tasten angeordnet:

img_keypad

Schaltplan

sch_keypad_ar

Die Reihen der Tastatur (G2 ~ G5) sind so programmiert, dass sie hoch gehen; wenn einer von G6 ~ G9 hoch gelesen wird, dann wissen wir, welche Taste gedrückt ist.

Beispielsweise, wenn G6 hoch gelesen wird, dann wird die numerische Taste 1 gedrückt; dies liegt daran, dass die Steuerpins der numerischen Taste 1 G2 und G6 sind, wenn die numerische Taste 1 gedrückt wird, werden G2 und G6 zusammen verbunden und G6 ist auch hoch.

Verdrahtung

wiring_keypad_ar

Schreiben des Codes

Bemerkung

  • Sie können die Datei 4.2_4x4_keypad.ino aus newton-lab-kit/arduino/4.2_4x4_keypad öffnen.

  • Oder kopieren Sie diesen Code in die Arduino IDE.

  • Wählen Sie das Raspberry Pi Pico 2-Board und den richtigen Port, dann klicken Sie auf „Upload“.

  • Die Adafruit Keypad-Bibliothek wird hier verwendet, Sie können sie aus dem Library Manager installieren.

    ../_images/lib_ad_keypad.png
#include "Adafruit_Keypad.h"

// Define the number of rows and columns
const byte ROWS = 4;
const byte COLS = 4;

// Define the keymap for the keypad
char keys[ROWS][COLS] = {
  { '1', '2', '3', 'A' },
  { '4', '5', '6', 'B' },
  { '7', '8', '9', 'C' },
  { '*', '0', '#', 'D' }
};

// Connect to the row pinouts of the keypad
byte rowPins[ROWS] = { 2, 3, 4, 5 };

// Connect to the column pinouts of the keypad
byte colPins[COLS] = { 6, 7, 8, 9 };

// Create the Keypad object
Adafruit_Keypad myKeypad = Adafruit_Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);

void setup() {
  // Initialize Serial communication
  Serial.begin(115200);

  // Initialize the keypad
  myKeypad.begin();
}

void loop() {
  // Update the state of keys
  myKeypad.tick();

  // Check if there are any new keypad events
  while (myKeypad.available()) {
    // Read the keypad event
    keypadEvent e = myKeypad.read();

    // Check if the event is a key press
    if (e.bit.EVENT == KEY_JUST_PRESSED) {
      // Print the key value to the Serial Monitor
      Serial.println((char)e.bit.KEY);
    }
  }

  delay(10); // Short delay to improve stability
}

Nach dem Hochladen des Codes drücken Sie eine beliebige Taste auf dem Tastenfeld. Das entsprechende Tastenlabel (z. B. ‚1‘, ‚A‘) sollte im Seriellen Monitor erscheinen.

Stellen Sie sicher, dass jeder Tastendruck genau erkannt und angezeigt wird. Testen Sie alle Tasten, um die korrekte Funktionalität zu bestätigen.

Verständnis des Codes

  1. Einschließen der Bibliothek:

    Diese Zeile schließt die Adafruit Keypad-Bibliothek ein, die Funktionen zur Interaktion mit dem Tastenfeld bietet.

    #include "Adafruit_Keypad.h"
    
  2. Definition des Tastenfeld-Layouts:

    ROWS und COLS definieren die Abmessungen des Tastenfelds. keys ist ein 2D-Array, das das Label jeder Taste auf dem Tastenfeld darstellt.

    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' }
    };
    
  3. Anschließen des Tastenfelds an GPIO-Pins:

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

    byte rowPins[ROWS] = { 2, 3, 4, 5 };
    byte colPins[COLS] = { 6, 7, 8, 9 };
    
  4. Initialisieren des Tastenfeld-Objekts:

    Diese Zeile erstellt eine Instanz der Klasse Adafruit_Keypad, die mit dem Tastenfeldschema und den Pin-Konfigurationen initialisiert wird.

    Adafruit_Keypad myKeypad = Adafruit_Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
    
  5. Setup-Funktion:

    Initialisiert die serielle Kommunikation für das Debugging und startet das Tastenfeld.

    void setup() {
      Serial.begin(115200);    // Initialize serial communication at 115200 baud
      myKeypad.begin();        // Initialize the keypad
    }
    
  6. Loop-Funktion:

    • Überprüft kontinuierlich auf Tastenereignisse.

    • Wenn eine Taste gedrückt wird, wird der Tastenwert im Seriellen Monitor angezeigt.

    void loop() {
      myKeypad.tick(); // Update the state of keys
    
      while (myKeypad.available()) {
        keypadEvent e = myKeypad.read(); // Read the keypad event
    
        if (e.bit.EVENT == KEY_JUST_PRESSED) {
          Serial.println((char)e.bit.KEY); // Print the pressed key
        }
      }
      delay(10); // Short delay to improve stability
    }
    

Weiterführende Untersuchungen

  • Implementierung der Tasten-Entprellung:

    Verbessern Sie die Zuverlässigkeit der Tastenerkennung, indem Sie Entprelltechniken implementieren, um falsche Auslösungen durch mechanisches Rauschen zu filtern.

  • Erstellung eines Passworteingabesystems:

    Verwenden Sie das Tastenfeld zur Eingabe eines Passworts und zur Steuerung des Zugangs zu bestimmten Funktionen in Ihrem Projekt.

  • Integration mit anderen Komponenten:

    Kombinieren Sie das Tastenfeld mit LCD-Displays, LEDs oder Summer, um komplexere Benutzeroberflächen zu erstellen.

  • Bau eines einfachen Taschenrechners:

    Verwenden Sie das Tastenfeld, um Zahlen einzugeben und grundlegende Rechenoperationen durchzuführen, die auf einem LCD angezeigt werden.

Fazit

In dieser Lektion haben Sie gelernt, wie man ein 4x4-Matrix-Tastenfeld mit dem Raspberry Pi Pico unter Verwendung der Adafruit Keypad-Bibliothek verbindet. Durch die Erkennung von Tastendrücken können Sie interaktive Projekte wie tastaturbasierte Eingabesysteme, Passworteingabemechanismen und mehr erstellen. Das Verständnis, wie Tasteneingaben gelesen und verarbeitet werden, ist wesentlich für den Bau benutzerfreundlicher Schnittstellen in Ihren Elektronikprojekten.