ESP32 - TM1637 4-stellige 7-Segmentanzeige

Dieses Tutorial zeigt dir, wie du den ESP32 mit dem TM1637 4-stelligen 7-Segment-Anzeigemodul verwendest. Es behandelt die folgenden Themen:

ESP32 TM1637 4-stellige 7-Segmentanzeige

In diesem Tutorial verwenden wir ein 4-stelliges 7-Segment-Anzeigemodul mit einem Doppelpunktseparator. Wenn Sie Gleitkommazahlen anzeigen möchten, lesen Sie bitte das Tutorial 74HC595 4-digit 7-segment Display Module.

Erforderliche Hardware

1×ESP32 ESP-WROOM-32 Entwicklungsmodul
1×USB-Kabel Typ-A zu Typ-C (für USB-A PC)
1×USB-Kabel Typ-C zu Typ-C (für USB-C PC)
1×TM1637 4-digit 7-segment Display
1×Breadboard
1×Verbindungskabel
1×(Optional) 5V Power Adapter for ESP32
1×(Empfohlen) Schraubklemmen-Erweiterungsboard für ESP32
1×(Empfohlen) Breakout Expansion Board for ESP32
1×(Empfohlen) Stromverteiler für ESP32

Oder Sie können die folgenden Kits kaufen:

1×DIYables ESP32 Starter-Kit (ESP32 enthalten)
1×DIYables Sensor-Kit (30 Sensoren/Displays)
1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Über TM1637 4-stellige 7-Segmentanzeige

Eine 4-stellige 7-Segment-Anzeige wird üblicherweise für Uhr, Timer und Zähler verwendet und zeigt die Temperatur an. Allerdings benötigt sie normalerweise 12 Anschlüsse. Das TM1637-Modul vereinfacht dies, da es nur 4 Anschlüsse benötigt: 2 für die Stromversorgung und 2 zur Steuerung der Segmente.

Ein TM1637-Modul besteht im Allgemeinen aus vier 7-Segment-LEDs und einer der folgenden Optionen:

  • Eine Doppelpunkt-LED in der Mitte: Ideal, um die Uhrzeit in Stunden und Minuten anzuzeigen, oder Minuten und Sekunden, oder Spielstände zweier Mannschaften.
  • Vier punktförmige LEDs pro Ziffer: Ideal, um die Temperatur oder jeden Dezimalwert anzuzeigen.

Die Pinbelegung des TM1637-4-stelligen 7-Segment-Displays

TM1637 4-stellige 7-Segment-Anzeige-Modul hat vier Pins:

  • CLK-Pin: ist ein Takt-Eingangspin, der mit jedem digitalen Pin des ESP32 verbunden werden sollte.
  • DIO-Pin: ist ein Daten-I/O-Pin, der mit jedem digitalen Pin des ESP32 verbunden werden sollte.
  • VCC-Pin: dient zur Stromversorgung des Moduls und sollte an eine 3,3-V bis 5-V-Stromversorgung angeschlossen werden.
  • GND-Pin: ist ein Massepin, der mit der Masse des ESP32 verbunden werden sollte.
Pinbelegung des TM1637-Moduls

Verdrahtungsdiagramm

Um einen TM1637 mit einem ESP32 zu verbinden, sind vier Drähte erforderlich: zwei für die Stromversorgung und zwei zur Ansteuerung des Displays. Das Modul kann über den 5-Volt-Ausgang des ESP32 mit Strom versorgt werden. Die CLK- und DIO-Pins sollten mit beliebigen digitalen Pins des Arduino verbunden werden; zum Beispiel die Pins 2 und 3. Falls andere Pins verwendet werden, müssen die Pin-Nummern im Code angepasst werden.

ESP32 TM1637-Modul Verdrahtungsdiagramm

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Wenn Sie nicht wissen, wie Sie ESP32 und andere Komponenten mit Strom versorgen, finden Sie Anleitungen im folgenden Tutorial: Wie man ESP32 mit Strom versorgt.

Bibliotheksinstallation

Um einfach für das TM1637-4-stellige 7-Segment-Anzeige zu programmieren, müssen wir die Bibliothek TM1637Display von Avishay Orpaz installieren. Befolgen Sie die untenstehenden Schritte, um die Bibliothek zu installieren:

  • Klicken Sie auf das Bibliotheken-Symbol in der linken Leiste der Arduino-IDE.
  • Suchen Sie „TM1637“, und finden Sie dann die TM1637Display-Bibliothek von Avishay Orpaz
  • Klicken Sie auf die Installieren-Schaltfläche.
Arduino TM1637 4-stellige 7-Segmentanzeige-Bibliothek

Wie programmiert man den TM1637 4-stellige 7-Segmentanzeige mit ESP32

  • Binde die Bibliothek ein.
#include <TM1637Display.h>
  • Geben Sie die ESP32-Pins an, die mit dem CLK und DIO des Display-Moduls verbunden sind. Zum Beispiel D9 und D10.
#define CLK 22 // Der ESP32-Pin GPIO22 verbunden mit CLK #define DIO 23 // Der ESP32-Pin GPIO23 verbunden mit DIO
  • Erstelle ein TM1637Display-Objekt.
TM1637Display display = TM1637Display(CLK, DIO);
  • Dann können Sie Zahlen anzeigen, Zahlen mit Dezimalstellen, Zahlen mit negativen Vorzeichen oder Buchstaben. Im Fall der Buchstaben müssen Sie die Buchstabenform angeben. Lassen Sie uns jeden einzelnen Fall separat betrachten.
  • Zahlen anzeigen: Siehe die untenstehenden Beispiele; '_' in der folgenden Beschreibung steht für eine Ziffer, die in der Praxis nicht angezeigt wird:
display.showNumberDec(-12); // angezeigt _-12 display.showNumberDec(-999); // angezeigt -999 display.showNumberDec(42); // angezeigt __42 display.showNumberDec(42, false); // angezeigt __42 display.showNumberDec(42, false, 2, 0); // angezeigt 42__ => zeigt 2 Ziffern an Position 0 display.showNumberDec(42, true); // angezeigt 0042 => Null-Padding display.showNumberDec(14, false, 2, 1); // angezeigt _14_ display.showNumberDec(-5, false, 3, 0); // angezeigt _-5_ display.showNumberDec(1234); // angezeigt 1234
  • Zeige die Zahl mit einem Doppelpunkt oder Punkt:
// Zeigt 15:30 im Modul mit Doppelpunkt-Trennung an, oder 15.30 im Modul mit Doppelpunkt-Trennung display.showNumberDecEx(1530, 0b11100000, false, 4, 0);

Sie finden weitere Informationen zu den Funktionen am Ende dieses Tutorials.

ESP32-Code

/* * Dieser ESP32 Code wurde von newbiely.de entwickelt * Dieser ESP32 Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/esp32/esp32-tm1637-4-digit-7-segment-display */ #include <TM1637Display.h> #define CLK 22 // The ESP32 pin GPIO22 connected to CLK #define DIO 23 // The ESP32 pin GPIO23 connected to DIO // create a display object of type TM1637Display TM1637Display display = TM1637Display(CLK, DIO); // an array that sets individual segments per digit to display the word "dOnE" const uint8_t done[] = { SEG_B | SEG_C | SEG_D | SEG_E | SEG_G, // d SEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F, // O SEG_C | SEG_E | SEG_G, // n SEG_A | SEG_D | SEG_E | SEG_F | SEG_G // E }; // degree celsius symbol const uint8_t celsius[] = { SEG_A | SEG_B | SEG_F | SEG_G, // Degree symbol SEG_A | SEG_D | SEG_E | SEG_F // C }; void setup() { display.clear(); display.setBrightness(7); // set the brightness to 7 (0:dimmest, 7:brightest) } void loop() { // show counter 0-9 int i; for (i = 0; i < 10; i++) { display.showNumberDec(i); delay(500); display.clear(); } display.showNumberDec(-91); // displayed _-91 delay(2000); display.clear(); display.showNumberDec(-109); // displayed -109 delay(2000); display.clear(); display.showNumberDec(21, false); // displayed __21 delay(2000); display.clear(); display.showNumberDec(21, true); // displayed 0021 delay(2000); display.clear(); display.showNumberDec(28, false, 2, 1); // displayed _28_ delay(2000); display.clear(); display.showNumberDec(-9, false, 3, 0); // displayed _-9_ delay(2000); display.clear(); // displayed 15:30 display.showNumberDecEx(1530, 0b11100000, false, 4, 0); delay(2000); display.clear(); // displayed 23°C int temperature = 23; // or read from temperature sensor display.showNumberDec(temperature, false, 2, 0); display.setSegments(celsius, 2, 2); delay(2000); display.clear(); // displayed letters: dOnE display.setSegments(done); delay(2000); display.clear(); }

Schnelle Schritte

Um mit ESP32 in der Arduino-IDE zu beginnen, befolgen Sie diese Schritte:

  • Wenn dies das erste Mal ist, dass Sie ESP32 verwenden, siehe wie man die Umgebung für ESP32 in der Arduino IDE einrichtet.
  • Verbinden Sie die Kabel gemäß dem obigen Bild.
  • Verbinden Sie das ESP32-Board über ein Micro-USB-Kabel mit Ihrem PC.
  • Öffnen Sie die Arduino IDE auf Ihrem PC.
  • Wählen Sie das richtige ESP32-Board (z. B. ESP32 Dev Module) und den COM-Port.
  • Kopieren Sie den obigen Code und fügen Sie ihn in die Arduino IDE ein.
  • Kompilieren Sie den Code und laden Sie ihn auf das ESP32-Board hoch, indem Sie in der Arduino IDE auf die Schaltfläche Upload klicken.
Code in der Arduino IDE hochladen
  • Beobachten Sie die Zustände der 7-Segmentanzeige.

Video Tutorial

Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.

Funktionsreferenzen

Nachfolgend finden Sie die Referenzen für:

  • Bildschirm löschen
  • Dezimalzahl anzeigen
  • Erweiterte Dezimalzahlenanzeige anzeigen
  • Segmente einstellen
  • Helligkeit einstellen

display.clear()

Beschreibung

Diese Funktion löscht das Display. Sie schaltet alle LEDs aus.

display.showNumberDec()

Beschreibung

Die 7-Segmentanzeige wird verwendet, um eine Dezimalzahl anzuzeigen. Diese Funktion wird dafür verwendet.

Syntax

void showNumberDec(int num, bool leading_zero = false, uint8_t length = 4, uint8_t pos = 0);

Parameter

  • num: ist der Wert, der auf der 7-Segmentanzeige angezeigt werden soll und im Bereich von -9999 bis 9999 liegt.
  • leading_zero: ein optionaler Parameter mit einem Standardwert von false, bestimmt, ob Führende Nullen angezeigt werden sollen.
  • length: ein weiterer optionaler Parameter mit einem Standardwert von 4, legt die Anzahl der anzuzeigenden Ziffern fest.
  • pos: ebenfalls ein optionaler Parameter mit einem Standardwert von 0, legt die Position der höchstsignifikanten Ziffer fest.

Bitte beachten Sie, dass die Funktion nichts anzeigt, wenn die Zahl außerhalb des Bereichs liegt oder wenn der Längenwert größer als 4 ist.

showNumberDecEx()

Beschreibung

Diese Funktion ist eine Weiterentwicklung von showNumberDec() und bietet mehr Kontrolle über die Anzeige einer Dezimalzahl auf der 7-Segmentanzeige. Sie verfügt über die Möglichkeit, die Punkt- oder Doppelpunktsegmente jedes Zeichens individuell zu steuern.

Satzbau

void showNumberDecEx(int num, uint8_t dots, bool leading_zero = false, uint8_t length = 4, uint8_t pos = 0);

Parameter

  • num1: Dies ist die Zahl, die auf der 7-Segmentanzeige angezeigt werden soll. Sie sollte sich im Bereich von -9999 bis 9999 befinden.
  • dots: Dieser Parameter wird verwendet, um festzulegen, welche Segmente des Displays als Punkte eingeschaltet werden sollen. Jedes Bit des Werts entspricht einer Ziffer auf dem Display. Mögliche Werte sind:
    • 0b10000000 zum Anzeigen des ersten Punkts (0.000)
    • 0b01000000 zum Anzeigen des zweiten Punkts (00.00) oder des Doppelpunkts (00:00). Je nach Modultyp.
    • 0b00100000 zum Anzeigen des dritten Punkts (000.0)
  • leading_zero: Dies ist ein optionaler Parameter mit dem Standardwert false. Wenn er auf true gesetzt wird, werden führende Nullen angezeigt.
  • length: Dies ist ein optionaler Parameter mit dem Standardwert 4. Es bestimmt die Anzahl der Ziffern, die auf der 7-Segmentanzeige angezeigt werden.
  • pos: Dies ist ein optionaler Parameter mit dem Standardwert 0. Er legt die Position der signifikantesten Ziffer der Zahl fest.

Zum Beispiel: Wenn Sie display.showNumberDecEx(1530, 0b01000000) verwenden, wird es angezeigt:

  • Die Zahl 15:30 auf der 7-Segmentanzeige, wenn das Modul eine Doppelpunkt-LED hat.
  • Die Zahl 15.30 auf der 7-Segmentanzeige, wenn das Modul aus punktförmigen LEDs besteht.

Bitte beachten Sie, dass die Funktion nichts anzeigt, wenn die Zahl außerhalb des Bereichs liegt oder wenn der Wert der Länge größer als 4 ist.

Segmente setzen()

Beschreibung

Die Funktion ermöglicht es, die Segmente der 7-Segment-Anzeige direkt zu steuern. Sie kann verwendet werden, um Buchstaben, Sonderzeichen anzuzeigen oder alle LED-Segmente auszuschalten.

Syntax

void setSegments(const uint8_t segments[], uint8_t length = 4, uint8_t pos = 0);

Parameter

  • segments: Dieser Parameter legt die Segmente der 7-Segment-Anzeige fest, die ein Array von Bytes darstellen. Jedes Byte repräsentiert die Segmente jeder Ziffer, und jedes Segment wird durch ein Bit im Byte dargestellt.
  • length: Dies ist ein optionaler Parameter mit einem Standardwert von 4. Er bestimmt die Anzahl der Ziffern, die auf der 7-Segment-Anzeige angezeigt werden.
  • pos: Dies ist ein optionaler Parameter mit einem Standardwert von 0. Er gibt die Position der Ziffer mit dem höchsten Stellenwert der Zahl an.

Diese Funktion ist nützlich, wenn Sie Zeichen oder Symbole anzeigen müssen, die auf der Standard-7-Segmentanzeige nicht verfügbar sind. Sie können jedes gewünschte Muster erstellen, indem Sie die Segmente direkt einstellen.

Bitte beachten Sie, dass die Funktion nichts anzeigt, wenn die Zahl außerhalb des Bereichs liegt oder der Wert der Länge größer als 4 ist.

setHelligkeit()

Beschreibung

Die Helligkeit der 7-Segment-Anzeige kann mit dieser Funktion eingestellt werden.

Syntax

void setBrightness(uint8_t brightness, bool on = true);

Parameter

  • brightness: Dieser Parameter stellt die Helligkeit der 7-Segmentanzeige ein. Der Wert sollte zwischen 0 und 7 liegen, wobei eine höhere Zahl zu einer helleren Anzeige führt.
  • on: Dies ist ein optionaler Parameter mit einem Standardwert von wahr. Er wird verwendet, um die Anzeige ein- oder auszuschalten. Wenn er auf falsch gesetzt wird, wird die Anzeige deaktiviert.

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!