🍪 Privacy & Transparency

We and our partners use cookies to Store and/or access information on a device. We and our partners use data for Personalised ads and content, ad and content measurement, audience insights and product development. An example of data being processed may be a unique identifier stored in a cookie. Some of our partners may process your data as a part of their legitimate business interest without asking for consent. To view the purposes they believe they have legitimate interest for, or to object to this data processing use the vendor list link below. The consent submitted will only be used for data processing originating from this website. If you would like to change your settings or withdraw consent at any time, the link to do so is in our privacy policy accessible from our home page..

Vendor List | Privacy Policy
Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry PI

Menu
  • Projekte
    • LED’s
    • Servo & Schrittmotoren
    • Sound
    • LCD’s
    • Kommunikation
    • Sicherheit
    • Weekend Project
  • Arduino
    • Tutorials
    • ProMini
      • Anschließen & Programmieren
    • Nano
      • Arduino Nano – Übersicht
    • UNO
      • Übersicht
    • MEGA 2560
      • Übersicht
    • Leonardo
      • Übersicht
    • NodeMCU
      • NodeMCU – “Einer für (fast) Alles!”
    • Lilypad
      • Arduino: Lilypad “Jetzt Geht’s Rund!”
    • WEMOS
      • WEMOS D1 – Arduino UNO kompatibles Board mit ESP8266 Chip
      • WEMOS D1 Mini – Übersicht
      • Wemos D1 mini Shields
    • STM32x
      • STM32F103C8T6 – Übersicht
    • Maker UNO
      • Maker UNO – Überblick und Test
    • ATTiny85
      • Mini Arduino mit ATTiny85 Chip
      • ATtiny85 mit dem Arduino UNO beschreiben
  • Android
  • Über mich
  • DeutschDeutsch
  • EnglishEnglish
Menu

Arduino Lektion 68: 4×4 Matrix Tastatur

Posted on 12. November 20181. Mai 2023 by Stefan Draeger

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

4x4 Matrix Tastatur
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.

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 nix).

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 wurde diese 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.

10 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

Schreibe einen Kommentar Antworten abbrechen

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

Kategorien

Tools

  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator
  • Widerstandsrechner
  • Rechner für Strom & Widerstände
  • ASCII Tabelle

Meta

  • Videothek
  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Kontakt
  • Cookie-Richtlinie (EU)

Links

Blogverzeichnis Bloggerei.de Blogverzeichnis TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com
©2023 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb