ESP8266 - TM1637 4-stellige 7-Segmentanzeige

Dieses Tutorial erklärt dir, wie man den ESP8266 mit dem TM1637-Modul und der 4-stelligen 7-Segmentanzeige verwendet. Im Detail werden wir lernen:

ESP8266 NodeMCU TM1637 4-stellige 7-Segmentanzeige

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

Erforderliche Hardware

1×ESP8266 NodeMCU
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×Verbindungskabel
1×(Empfohlen) Schraubklemmen-Erweiterungsboard für ESP8266
1×(Empfohlen) Stromverteiler für ESP8266 Typ-C

Oder Sie können die folgenden Kits kaufen:

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

Ein vierstelliges 7-Segment-Display wird üblicherweise für Uhr, Timer und Zähler verwendet und zeigt die Temperatur an. Es erfordert jedoch 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 Ansteuerung der Segmente.

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

  • Eine LED in Form eines Doppelpunkts in der Mitte: Sie eignet sich ideal zur Anzeige der Zeit in Stunden und Minuten, oder Minuten und Sekunden, oder Spielstände zweier Mannschaften.
  • Vier punktförmige LEDs pro Ziffer: Sie eignen sich ideal zur Anzeige der Temperatur oder eines beliebigen Dezimalwerts.

TM1637 4-stellige 7-Segmentanzeige Pinbelegung

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

  • CLK-Pin: ist ein Takteingangspin, der mit jedem digitalen Pin des ESP8266 verbunden werden sollte.
  • DIO-Pin: ist ein Data-I/O-Pin, der mit jedem digitalen Pin des ESP8266 verbunden werden sollte.
  • VCC-Pin: wird verwendet, um dem Modul Strom zuzuführen und sollte mit einer 3,3-V bis 5-V-Stromversorgung verbunden werden.
  • GND-Pin: ist ein Massepin, der mit dem Masseanschluss des ESP8266 verbunden werden sollte.
Pinbelegung des TM1637-Moduls

Verdrahtungsdiagramm

Um ein TM1637-Modul mit einem ESP8266 zu verbinden, sind vier Leitungen erforderlich: zwei für die Stromversorgung und zwei zur Steuerung des Displays. Das Modul kann über den 5-Volt-Ausgang des ESP8266 mit Strom versorgt werden. Die CLK- und DIO-Pins sollten mit beliebigen digitalen Pins des Arduino verbunden werden; beispielsweise Pins 2 und 3. Wenn andere Pins verwendet werden, müssen die Pin-Nummern im Code angepasst werden.

ESP8266 NodeMCU TM1637-Modul Verdrahtungsdiagramm

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

Weitere Informationen finden Sie unter ESP8266-Pinbelegung und wie man ESP8266 und andere Komponenten mit Strom versorgt.

Bibliotheksinstallation

Um einfach für das TM1637-4-stellige 7-Segmentanzeige 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“, dann finden Sie die TM1637Display-Bibliothek von Avishay Orpaz
  • Klicken Sie auf die Installieren-Schaltfläche.
Arduino TM1637 4-stellige 7-Segmentanzeige Bibliothek

Wie man eine TM1637 4-stellige 7-Segmentanzeige mit ESP8266 programmiert

  • Die Bibliothek einbinden
#include <TM1637Display.h>
  • Geben Sie die ESP8266-Pins an, die mit dem CLK- und dem DIO-Pin des Displaymoduls verbunden sind. Zum Beispiel D2 und D1.
#define CLK D2 #define DIO D1
  • Erstelle ein TM1637Display-Objekt.
TM1637Display display = TM1637Display(CLK, DIO);
  • Dann können Sie Zahlen, Dezimalzahlen, Zahlen mit negativen Vorzeichen oder Buchstaben anzeigen. Im Fall von Buchstaben müssen Sie die Buchstabenform angeben. Betrachten wir jeden Fall einzeln.
  • 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__ => Anzeige von 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 Doppelpunkt-Modul an, oder 15.30 im Doppelpunkt-Modul display.showNumberDecEx(1530, 0b11100000, false, 4, 0);

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

ESP8266-Code

/* * Dieser ESP8266 NodeMCU Code wurde von newbiely.de entwickelt * Dieser ESP8266 NodeMCU 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/esp8266/esp8266-tm1637-4-digit-7-segment-display */ #include <TM1637Display.h> // define the connections pins #define CLK D2 // The ESP8266 pin connected to the CLK pin of TM1637 Display #define DIO D1 // The ESP8266 pin connected to the DIO pin of TM1637 Display // 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 dem ESP8266 in der Arduino-IDE zu beginnen, befolgen Sie diese Schritte:

  • Schau dir das Tutorial wie man die Umgebung für ESP8266 in der Arduino IDE einrichtet an, falls dies dein erstes Mal mit ESP8266 ist.
  • Verbinde die Bauteile wie im Diagramm gezeigt.
  • Schließe das ESP8266-Board mit einem USB-Kabel an deinen Computer an.
  • Öffne die Arduino IDE auf deinem Computer.
  • Wähle das richtige ESP8266-Board, z. B. (NodeMCU 1.0 (ESP-12E Modul)), und den jeweiligen COM-Port.
  • Kopiere den Code und öffne ihn mit der Arduino IDE.
  • Klicke den Upload-Button, um den Code auf den ESP8266 zu übertragen.
  • Schau dir die Zustände der 7-Segmentanzeige an.

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 sind die Referenzen für:

  • display.loeschen()
  • display.zeigeDezimalzahl()
  • display.zeigeDezimalzahlEx()
  • display.setzeSegmente()
  • display.helligkeitSetzen()

Anzeige.löschen()

Beschreibung

Diese Funktion löscht das Display. Alle LEDs werden ausgeschaltet.

display.showNumberDec()

Beschreibung

Die 7-Segmentanzeige wird verwendet, um eine Dezimalzahl anzuzeigen. Diese Funktion dient dazu.

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 wird, liegt im Bereich von -9999 bis 9999.
  • 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 signifikantesten 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 dem 7-Segment-Display. Sie verfügt über die Möglichkeit, die Punkt- oder Doppelpunktsegmente jeder Ziffer 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 dient dazu festzulegen, welche Segmente des Displays als Punkte eingeschaltet werden sollen. Jedes Bit des Wertes entspricht einer Ziffer auf dem Display. Mögliche Werte sind:
    • 0b10000000 zur Anzeige des ersten Punkts (0.000)
    • 0b01000000 zur Anzeige des zweiten Punkts (00.00) oder des Doppelpunkts (00:00). Es hängt vom Modultyp ab.
    • 0b00100000 zur Anzeige 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. Er 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, falls das Modul eine Doppelpunkt-LED hat.
  • Die Zahl 15.30 auf der 7-Segmentanzeige, falls das Modul über punktförmige LEDs verfügt.

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

Segmente festlegen()

Beschreibung

Die Funktion ermöglicht es, die Segmente der 7-Segmentanzeige direkt zu setzen. 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 setzt die Segmente der 7-Segment-Anzeige, die ein Array von Bytes bilden. 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 höchstwertigen Ziffer der Zahl an.

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

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

Helligkeit einstellen()

Beschreibung

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

Syntax

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

Parameter

  • brightness: Dieser Parameter passt die Leuchtkraft der 7-Segment-Anzeige an. Der Wert sollte zwischen 0 und 7 liegen, wobei eine höhere Zahl eine hellere Anzeige erzeugt.
  • on: Dies ist ein optionaler Parameter mit dem Standardwert true. Er wird verwendet, um die Anzeige ein- oder auszuschalten. Wenn er auf false 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!