Suchcode

Wie man ein TM1638 4-stelliges Display verwendet. Video ansehen

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

TM1637 keypad display module-1

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

HerstellerQYF
TeilenummerTM1638
Logik-/I/O-Spannung5 V
Versorgungsspannung5 V
Ausgangsstrom (pro Segment)20 mA
Spitzenstrom (gesamt)120 mA
Schwellenwerte der Eingangslogik0.2 V (niedrig) / 0.8 V (hoch)
PaketDIP-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:

Arduino wiring for TM1637 keypad display module
Arduino wiring for TM1637 keypad display module
- Verbinden Sie den beschrifteten PinVCCam 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

Bilder

TM1637 keypad display module-1
TM1637 keypad display module-1
TM1637 keypad display module-2
TM1637 keypad display module-2
TM1637 keypad display module-3
TM1637 keypad display module-3
TM1637 keypad display module
TM1637 keypad display module
Arduino wiring for TM1637 keypad display module
Arduino wiring for TM1637 keypad display module
28-This is the Arduino code for a TM1638 8-digit display with a 4x4 matrix button.
Sprache: C++
/*
 * 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

Ressourcen & Referenzen

Dateien📁

Arduino-Bibliotheken (zip)

|||Benutzerhandbuch