Wie man ein TM1638 4-stelliges Display verwendet. Video ansehen
Das TM1638-Modul ist ein vielseitiges Bauteil, das Zahlen und Zeichen anzeigen und über Tasten gesteuert werden kann. In diesem Tutorial erfahren Sie, wie Sie dieses Display einrichten und programmieren, um verschiedene Werte anzuzeigen, einschließlich Zahlen und Hex-Werten. Am Ende dieses Leitfadens haben Sie ein voll funktionsfähiges Display, das auf Tastendrücke reagiert und die Anzeige je nach Benutzereingabe ändert. Sie können eine Demonstration im Video sehen (bei 00:00).

Hardware erklärt
Das TM1638-Modul ist zum Anzeigen von Informationen und zum Empfangen von Eingaben über Tasten konzipiert. Es besteht aus einer 8-stelligen LED-Anzeige und einer Matrix aus 16 Tasten. Jede Taste kann so programmiert werden, dass sie verschiedene Funktionen auslöst, wodurch eine benutzerfreundliche Oberfläche entsteht. Das Modul verbindet sich mit einem Mikrocontroller über drei Pins: einen Daten-Ein-/Ausgangspin, einen Taktpin und einen Strobe-Pin. Diese Konfiguration ermöglicht eine effiziente Kommunikation zwischen dem Mikrocontroller und dem TM1638. Der TM1638-IC steuert die Anzeige und die Tasteneingaben. Er verwendet ein serielles Kommunikationsprotokoll, das es ihm erlaubt, die Anzeige zu steuern und den Zustand der Tasten mit minimaler Verkabelung auszulesen. Jeder Tastendruck sendet ein Signal an den Mikrocontroller, der dann je nach gedrückter Taste bestimmte Aktionen ausführen kann.
Details zum Datenblatt
| Hersteller | QYF |
|---|---|
| Teilenummer | TM1638 |
| Logik-/I/O-Spannung | 5 V |
| Versorgungsspannung | 5 V |
| Ausgangsstrom (pro Segment) | 20 mA |
| Spitzenstrom (gesamt) | 120 mA |
| Schwellenwerte der Eingangslogik | 0.2 V (niedrig) / 0.8 V (hoch) |
| Paket | DIP-28 |
- Stellen Sie sicher, dass die Versorgungsspannung für optimale Leistung stabil bei 5 V ist.
- Begrenzen Sie den Ausgangsstrom, um Schäden am Display zu vermeiden.
- Verwenden Sie Widerstände, um einen zu hohen Strom durch die LEDs zu vermeiden.
- Entprellen Sie Tastereingänge in der Software, um Mehrfachauslösungen zu vermeiden.
- Halten Sie die Verkabelung kurz, um Rauschen in der Kommunikation zu reduzieren.
Verdrahtungsanleitung
Um das TM1638‑Modul zu verkabeln, verbinden Sie es wie folgt mit Ihrem Mikrocontroller:

VCCam TM1638 mit der 5‑V-Stromversorgung Ihres Mikrocontrollers.
- Verbinden Sie dieGNDVerbinden Sie den Pin am TM1638 mit der Masse Ihres Mikrocontrollers.
- Verbinden Sie dieSTBPin (oft bezeichnet inSTROBE) an den digitalen Pin 5 Ihres Mikrocontrollers.
- Verbinden Sie dasCLKPin (Takt) an digitalen Pin 2 Ihres Mikrocontrollers.
- Verbinden Sie dieDIOSchließen Sie den Pin (Daten-Ein-/Ausgang) an den digitalen Pin 3 Ihres Mikrocontrollers an.
Stellen Sie sicher, dass Sie Ihre Verbindungen überprüfen, bevor Sie das System einschalten. Wenn Sie dem Video (im Video bei 02:30) gefolgt sind, sollten Sie keine Probleme mit der Verkabelung haben.Codebeispiele & Schritt-für-Schritt-Anleitung
Der folgende Codeausschnitt initialisiert das TM1638‑Modul und richtet das Display ein. Der Bezeichnermodulerepräsentiert die für die Interaktion mit dem Display erstellte TM1638-Instanz.
TM1638QYF module(DIO, CLK, STB);
void setup()
{
module.setupDisplay(true, 7);
}In diesem Codeausschnitt wird das Display so eingerichtet, dass es die maximale Helligkeit (7) anzeigt. Der nächste Teil des Codes verwaltet Tastendrücke und ändert die Anzeige abhängig davon, welche Taste gedrückt wird.
void update(TM1638QYF* module, word* mode) {
word buttons = module->getButtons();
if (buttons != 0) {
*mode = buttons >> 1;
}
switch (*mode) {
case 0: module->setDisplayToString("press 1"); break;
// other cases follow
}
}Diese Funktion prüft, welcher Knopf gedrückt ist, indem siegetButtons()und aktualisiert die Anzeige entsprechend. Die VariablemodeEs bestimmt, welcher Text je nach gedrückter Taste angezeigt wird. Schließlich aktualisiert die Hauptschleife kontinuierlich die Anzeige.
void loop()
{
update(&module, &mode);
}Diese Schleife ruft dieupdateFunktion, die sicherstellt, dass die Anzeige basierend auf der Benutzerinteraktion aktualisiert wird. Für ein vollständiges Verständnis siehe den vollständigen Code, der unterhalb des Artikels geladen ist.
Vorführung / Was Sie erwartet
Wenn Sie alles verkabelt und den Code hochgeladen haben, sollte das Drücken der Tasten den angezeigten Text entsprechend ändern. Zum Beispiel zeigt das Drücken von Taste 1 "Drücken Sie 1" an, während das Drücken von Taste 2 ihn auf "Drücken Sie 2" ändert. Wenn es Probleme gibt, überprüfen Sie Ihre Verkabelung erneut und stellen Sie sicher, dass die richtigen Pins wie angegeben verwendet werden. Das Ansehen des Videos (im Video bei 05:00) hilft ebenfalls zu bestätigen, dass alles wie erwartet funktioniert.
Video-Zeitstempel
- 00:00- Einleitung
- 02:30- Verdrahtungsanleitung
- 05:00- Erklärung des Codes und Demonstration
/*
* Dies ist der Arduino-Code für das TM1638 8-stellige Display mit 16 Matrix-Tasten.
*
* Geschrieben von Ahmad Nejrabi für das Robojax-Video
* Datum: 10. Dezember 2017, in Ajax, Ontario, Kanada
* Die Genehmigung zur Weitergabe dieses Codes wurde erteilt, unter der Bedingung, dass diese
* Notiz mit dem Code aufbewahrt wird.
* Haftungsausschluss: Dieser Code ist "WIE ER IST" und nur zu Bildungszwecken gedacht.
*
* /
*
* /
* /*
* // http://arduinolearning.com/code/qyf-tm1638-and-arduino-module.php#codesyntax_2
* Modifiziert für das Robojax-Video am 10. Dezember 2017
*/
#include <TM1638.h>
#include <TM1638QYF.h>
#define STB 5
#define DIO 3
#define CLK 2
TM1638QYF module(DIO, CLK, STB);
word mode;
void setup()
{
module.setupDisplay(true, 7);
mode = 0; // initialen Knopf null
}
void update(TM1638QYF* module, word* mode) {
word buttons = module->getButtons();
// Button gedrückt - Modus wechseln
if (buttons != 0) {
*mode = buttons >> 1;
if (*mode < 0) {
module->clearDisplay();
delay(100);
}
}
switch (*mode) {
case 0: // S1
module->setDisplayToString("press 1");
break;
case 1: // S2
module->setDisplayToString("press 2");
break;
case 2: // S3
module->setDisplayToString("press 3");
break;
case 4: // S4
module->setDisplayToString("press 4");
break;
case 8: // S5
module->setDisplayToString("press 5");
break;
case 16: // S6
module->setDisplayToString("press 6");
break;
case 32: // S7
module->setDisplayToString("press 7");
break;
case 64: // S8
module->setDisplayToString("press 8");
break;
case 128: // S9
module->setDisplayToString("press 9");
break;
case 256: // S10
module->setDisplayToString("press 10");
break;
case 512: // S11
module->setDisplayToString("press 11");
break;
case 1024: // S12
module->setDisplayToString("press 12");
break;
case 2048: // S13
module->setDisplayToString("press 13");
break;
case 4096: // S14
module->setDisplayToString("press 14");
break;
case 8192: // S15
module->setDisplayToString("press 15");
break;
case 16384: // S16
module->setDisplayToString("robojax");
break;
default: // unbekannter Knopf
module->setDisplayToString("?????");
break;
}
}
void loop()
{
update(&module, &mode);
}
Dinge, die Sie vielleicht brauchen
-
AmazonTM1638 auf Amazonamzn.to
-
AliExpressTM1638 Tastaturmodul auf AliExpresss.click.aliexpress.com
Ressourcen & Referenzen
-
ExternTM1638-Bibliothek (von GitHub)github.com
Dateien📁
Arduino-Bibliotheken (zip)
|||Benutzerhandbuch
-
TM1638-Handbuch
robojax-TM1638_manual.pdf5.07 MB