Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry Pi | Raspberry Pi Pico

Menu
  • Smarthome
  • Gartenautomation
  • Arduino
  • ESP32 & Co.
  • Raspberry Pi & Pico
  • Solo Mining
  • Deutsch
  • English
Menu

Arduino Lektion 68: 4×4 Matrix Tastatur

Posted on 12. November 20186. März 2024 by Stefan Draeger

In diesem Tutorial möchte ich die 4×4 Matrix Tastatur vorstellen.

4×4 Matrix Tastatur

Diese kleine Tastatur verfügt über 16 Mikrotaster, welche in einem Raster von 4 Reihen zu je 4 Spalten angeordnet sind.

In dem Tutorial Arduino Lektion 64: 3×4 Matrix Tastatur habe ich bereits eine Folientastatur beschrieben.

  • Bezug
  • Technische Daten der Matrix Tastatur
  • Aufbau & Schaltung
    • Pinbelegung und Aufbau der 4×4 Matrix Tastatur
  • Quellcode
    • Ein einfaches Beispiel
      • Video
    • Komplexes Beispiel – Absenden von Shotcuts
      • Quellcode
      • Video

Bezug

Die 4×4 Matrix Tastatur kann für ca. 2,59 € über ebay.de bezogen werden. Hier sind die Hersteller / Verkäufer aus China wieder der Sieger im Preis, jedoch mit einer Lieferzeit von ca. 40 Tagen muss man hier mindestens einen Minuspunkt geben.
Wer dieses Modul früher sein Eigen nennen möchte, muss hier beim Kauf auf den Artikelstandort achten.

Hinweis von mir: Die mit einem Sternchen (*) markierten Links sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision, die dazu beiträgt, diesen Blog zu unterstützen. Der Preis für dich bleibt dabei unverändert. Vielen Dank für deine Unterstützung!

Technische Daten der Matrix Tastatur

  • Abmaße (LxBxH) 40 mm x 44 mm x 11 mm

Aufbau & Schaltung

Das mir vorliegende Modul hat eine unbeschriftete 8-fache Stiftleiste. Jedoch durch einfaches Testen der Pins mit einem Messgerät kann die korrekte Belegung ermittelt werden.

Wer sich das Messen ersparen möchte, muss beim Kauf darauf achten das, dass Modul beschriftet ist (am Preis ändert sich nichts).

Die 8-fache Stiftleiste ist, wie ich finde, falsch montiert, denn möchte man die Tastatur montieren stört diese, wenn noch zusätzlich die Breadboardkabel angeschlossen werden. Es gibt diese Tastatur, wo die Stiftleiste im 90° Winkel angebracht wurden, diese Version würde ich als klare Empfehlung geben.

4x4 Matrix Tastatur mit montierten Breadboardkabel
4×4 Matrix Tastatur mit montierten Breadboardkabel

Pinbelegung und Aufbau der 4×4 Matrix Tastatur

Pinbelegung und Aufbau der 4x4 Matrix Tastatur
Pinbelegung und Aufbau der 4×4 Matrix Tastatur

Quellcode

Nachdem also nun die Reihen und Spalten und somit die Pinbelegung ermittelt wurde, kann mit der Programmierung begonnen werden.

Ein einfaches Beispiel

Der nachfolgende Quellcode stammt vom Tutorial Arduino Lektion 64: 3×4 Matrix Tastatur hier habe ich nur die Anzahl der Spalten, die Pinbelegung sowie das mehrdimensionale char Array angepasst.

#include <Keypad.h> //Bibliothek zum auslesen der Matrix Tastatur
 
//Definieren der Zeilen und Spalten.
//Wenn eine größere Tastatur verwendet wird,
//muss das hierdefiniert werden.
const byte COLS = 4;
const byte ROWS = 4;
 
//Definieren der Pins, über welche die Matrix Tastatur
//mit dem Microcontroller verbunden wurde.
const byte COL_PINS[COLS] = { 5, 4, 3, 2 }; 
const byte ROW_PINS[ROWS] = { 6, 7, 8, 9};

//Da der Datentyp char nur ein Zeichen aufnehmen kann, 
//verwende ich ab der Zahl 10 die Buchstaben A bis G.
const char KEYS[ROWS][COLS]={
    {'1','2','3','4'},
    {'5','6','7', '8'},
    {'9','A','B', 'C'},
    {'D','E','F', 'G'}
};
 
//Initialisieren des KeyPad Objektes 
Keypad myKeypad = Keypad(makeKeymap(KEYS), ROW_PINS, COL_PINS, ROWS, COLS);
 
void setup() {
  //Begin der seriellen Kommunikation mit 9600 baud.
  Serial.begin(9600);
}
 
void loop() {
  //lesen ob eine Taste gedrückt wurde
  char key = myKeypad.getKey();
  //Wenn eine Taste gedrückt wurde, 
  //dann den Wert auf der seriellen Konsole
  //Ausgeben.
  if (key) { 
    Serial.print("Die Taste ");
    Serial.print(key);
    Serial.println(" wurde gedrueckt");
  }
}

Video

Hier nun ein kleines Video, welches die Funktion des oben gezeigten Quellcodes zeigt.

4x4 Matrix Tastatur am Arduino Leonardo
Dieses Video auf YouTube ansehen.

Komplexes Beispiel – Absenden von Shotcuts

Da ich eine spezielle Tastenkombination mit einem Tastendruck erzeugen möchte, muss ich hier zu einem Arduino Leonardo greifen. Der Arduino UNO kann hier nicht genutzt werden, da dieser nicht als USB Host agieren kann.

Arduino Leonardo
Arduino Leonardo

Ziel dieses komplexen Beispieles soll es sein, die Entwicklungsumgebung Eclipse zu „bedienen“.
Es sollen folgende Shortcuts abgesendet werden:

ShortcutAuswirkungTaster
Strg + Shift + FQuellcode FormatierenS1
Strg + Shift + BToogle BreakpointS2
Alt + Shift + AToggle Block SelectionS3
Strg + Shift + Yto LowerCaseS4
Strg + Shift + Xto UpperCaseS5
Strg + Shift +GReferences in WorkspaceS6

Eine komplette Liste aller Tastenkombinationen erhält man, wenn die Tastenkombination Strg + Shift + L betätigt wird.

Eclipse - Shortcuts
Eclipse – Shortcuts

Quellcode

In dem nachfolgenden Code habe ich mir 6 Shortcuts ausgewählt welche ich öfters verwende. Die restlichen 10 Taster habe ich noch nicht belegt, können aber nach dem gleichen Schema belegt werden.

Eine ausführliche Erläuterung zur Bibliothek „Keyboard“ sowie der Tastenkürzel findest du unter

https://www.arduino.cc/reference/en/language/functions/usb/keyboard/keyboardmodifiers/
https://www.arduino.cc/reference/en/language/functions/usb/keyboard/
#include <Keypad.h> //Bibliothek zum auslesen der Matrix Tastatur
#include <Keyboard.h> //Bibliothek um eine Tastatureingabe zu simulieren

//Definieren der Zeilen und Spalten.
//Wenn eine größere Tastatur verwendet wird,
//muss das hierdefiniert werden.
const byte COLS = 4;
const byte ROWS = 4;
 
//Definieren der Pins, über welche die Matrix Tastatur
//mit dem Microcontroller verbunden wurde.
const byte COL_PINS[COLS] = { 5, 4, 3, 2 }; 
const byte ROW_PINS[ROWS] = { 6, 7, 8, 9};

//Da der Datentyp char nur ein Zeichen aufnehmen kann, 
//verwende ich hier die Buchstaben A bis P.
const char KEYS[ROWS][COLS]={
    {'A','B','C','D'},
    {'E','F','G','H'},
    {'I','J','K','L'},
    {'M','N','O','P'}
};
 
//Initialisieren des KeyPad Objektes 
Keypad myKeypad = Keypad(makeKeymap(KEYS), ROW_PINS, COL_PINS, ROWS, COLS);
 
void setup() {
  //Begin der seriellen Kommunikation mit 9600 baud.
  Serial.begin(9600);
}
 
void loop() {
  //lesen ob eine Taste gedrückt wurde
  char key = myKeypad.getKey();
  //Wenn eine Taste gedrückt wurde, 
  //dann den Wert auswerten.
  if (key) { 
    switch (key){
      case 'A': formatCode(); break;
      case 'B': toggleBreakpoint(); break;
      case 'C': toggleBlockSelection(); break;
      case 'D': formatToLowerCase(); break;
      case 'E': formatToUpperCase(); break;
      case 'F': referencesInWorkspace(); break;
      case 'G':
      case 'H': 
      case 'I': 
      case 'J': 
      case 'K': 
      case 'L': 
      case 'M': 
      case 'N': 
      case 'O': 
      case 'P': 
        Serial.println("!!! Keine Funktion hinterlegt !!!");
      break;
    }
    Serial.print("Die Taste ");
    Serial.print(key);
    Serial.println(" wurde gedrueckt");
  }
}

void formatCode(){
  printKeys(KEY_LEFT_CTRL, KEY_LEFT_SHIFT, 'f');
}

void toggleBreakpoint(){
  printKeys(KEY_LEFT_CTRL, KEY_LEFT_SHIFT, 'b');
}

void toggleBlockSelection(){
  printKeys(KEY_LEFT_ALT, KEY_LEFT_SHIFT, 'a');
}

void formatToLowerCase(){
  printKeys(KEY_LEFT_CTRL, KEY_LEFT_SHIFT, 'z');
}

void formatToUpperCase(){
  printKeys(KEY_LEFT_CTRL, KEY_LEFT_SHIFT, 'x');
}

void referencesInWorkspace(){
  printKeys(KEY_LEFT_CTRL, KEY_LEFT_SHIFT, 'g');
}

void printKeys(int spezKey1, int spezKey2, char sign){
 Keyboard.press(spezKey1);
  Keyboard.press(spezKey2);
  Keyboard.press(sign);

  Keyboard.release(spezKey1);
  Keyboard.release(spezKey2);
  Keyboard.release(sign);
}

Video

Senden von Shortcuts an die Eclipse IDE mit dem Arduino Leonardo
Dieses Video auf YouTube ansehen.

11 thoughts on “Arduino Lektion 68: 4×4 Matrix Tastatur”

  1. Jer Snackey sagt:
    8. Januar 2019 um 13:06 Uhr

    My project is to make a buttonbox for my flightsim.
    Almost finished.
    i do understand the code a little bit.
    The examples you gave are a combination of three buttons. For example CTRL-SHIFT-w
    I found out that a combination of 2 buttons: CTRL-CTRL-w is working.
    But how do i program the numlock keys??? or just 1 button (for example only „3“)?

    Antworten
    1. Stefan Draeger sagt:
      8. Januar 2019 um 19:17 Uhr

      Hi Jer,

      when you want only send the number 3 you can write with Keyboard.write(„3“).
      Take a short look at https://www.arduino.cc/en/Tutorial/KeyboardAndMouseControl there you can find a simple example how to write letters.

      Best Regards,

      Stefan Draeger

      Antworten
      1. Jer Snackey sagt:
        11. Januar 2019 um 12:14 Uhr

        Stefan,
        Txs. But it has to be a combination of for example 3 buttons:
        W
        P
        Numpad 3

        Best Regards
        Jer Snackey

        Antworten
  2. Braun sagt:
    8. Mai 2020 um 18:42 Uhr

    Hallo, super Anleitung und ich habe die gleiche Matrix Tastatur wie oben beschrieben nur leider reagiert mein serieller Monitor auf keine Eingabe der Tastatur. Pinbelegung habe ich 5 mal überprüft, dieser stimmt überein. Die Bibliothek wurde ebenfalls von „Keypad by Mark stanley, Alexander Brevig“ installiert. Die Beispiel Sketches funktionieren ebenfalls nicht. Hast du vielleicht einen Tipp woran es liegt? Ich habe einen Arduino Uno und irgendwie habe ich die Vermutung das es an der Bibliothek liegt, da bei LCD mit i2C ebenfalls nicht läuft.

    Gruß Braun

    Antworten
    1. Stefan Draeger sagt:
      8. Mai 2020 um 19:24 Uhr

      Hi,

      ich habe das Tutorial mal geprüft und konnte erstmal kein Fehler finden.

      Schicke mir doch einmal ein Foto von deinem Aufbau sowie dein Sketch. Dann schaue ich mir das gerne einmal an.

      Gruß,

      Stefan Draeger

      Antworten
      1. Frank sagt:
        11. Mai 2020 um 19:24 Uhr

        Ich habe Ihnen eine Email geschickt.

        Gruß Frank

        Antworten
  3. Sven sagt:
    24. Januar 2021 um 08:25 Uhr

    Hallo, ich habe hier eine 16×32 Matrixtastatur.
    Wenn ich das richtig sehe müsste das doch mit einem Arduino Mega von den Eingängen her passen. Wenn dich das aber richtig verstanden habe, kann der Mega keine Keyboardeingaben an den PC senden oder?

    Antworten
    1. Stefan Draeger sagt:
      24. Januar 2021 um 08:57 Uhr

      Hi Sven,

      ja der Arduino Mega 2560 R3 kann das nicht dazu bräuchtest du einen Arduino Leonardo welcher als USB Host funktioniert. Es gibt aber auch USB Host Shields welche du aufstecken kannst.

      https://www.google.com/search?q=schnellender+finger&oq=schne&aqs=chrome.1.69i57j35i39l2j0i433j0.2071j0j4&client=ms-android-huawei-rev1&sourceid=chrome-mobile&ie=UTF-8

      Gruß,

      Stefan Draeger

      Antworten
      1. Sven sagt:
        3. Februar 2021 um 16:26 Uhr

        Ich habe mir einen Arduino DUE geholt. Die Tastenmatrix ist sogar 22×32 und läuft jetzt wunderbar.

        Antworten
  4. Christian sagt:
    25. Oktober 2021 um 17:16 Uhr

    Tastatur im Fundus gefunden. Kabel auf 30cm verlängert. Angeschlossen, Bibliothek installiert, Sketch hochgeladen. Funktioniert perfekt. Klasse Anleitung, sehr gut erklärt. Einfach TOP!!

    Ich steuere eine Model OpenAirbühne damit (noch Arduino UNO demnächst Arduino MEGA). Per Taster mach ich die Szenenauswahl, die vorher im Code definiert wurden…
    (WS2812b „PAR-Scheinwerfer“, Servos usw.)
    einfach genial.

    viele Grüße aus der Pfalz.

    Antworten
  5. Pingback: Einführung in das OLED Display und Tastenfeld Modul für Arduino mit Beispielprojekt - Technik Blog

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Fragen oder Feedback?

Du hast eine Idee, brauchst Hilfe oder möchtest Feedback loswerden?
Support-Ticket erstellen

Newsletter abonnieren

Bleib auf dem Laufenden: Erhalte regelmäßig Updates zu neuen Projekten, Tutorials und Tipps rund um Arduino, ESP32 und mehr – direkt in dein Postfach.

Jetzt Newsletter abonnieren

Unterstütze meinen Blog

Wenn dir meine Inhalte gefallen, freue ich mich über deine Unterstützung auf Tipeee.
So hilfst du mit, den Blog am Leben zu halten und neue Beiträge zu ermöglichen.

draeger-it.blog auf Tipeee unterstützen

Vielen Dank für deinen Support!
– Stefan Draeger

Kategorien

Tools

  • Unix-Zeitstempel-Rechner
  • ASCII Tabelle
  • Spannung, Strom, Widerstand und Leistung berechnen
  • Widerstandsrechner
  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator

Links

Blogverzeichnis Bloggerei.de TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com

Stefan Draeger
Königsberger Str. 13
38364 Schöningen
Tel.: 01778501273
E-Mail: info@draeger-it.blog

Folge mir auf

link zu Fabook
link zu LinkedIn
link zu YouTube
link zu TikTok
link zu Pinterest
link zu Instagram
  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Cookie-Richtlinie (EU)
©2025 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb
Cookie-Zustimmung verwalten
Wir verwenden Technologien wie Cookies, um Geräteinformationen zu speichern und/oder darauf zuzugreifen. Wir tun dies, um das Surferlebnis zu verbessern und um personalisierte Werbung anzuzeigen. Wenn Sie diesen Technologien zustimmen, können wir Daten wie das Surfverhalten oder eindeutige IDs auf dieser Website verarbeiten. Wenn Sie Ihre Zustimmung nicht erteilen oder zurückziehen, können bestimmte Funktionen beeinträchtigt werden.
Funktional Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
Optionen verwalten Dienste verwalten Verwalten von {vendor_count}-Lieferanten Lese mehr über diese Zwecke
Einstellungen anzeigen
{title} {title} {title}