4 x 7 Segment-Modul (TM1637) + ESP32 Tutorial
Einleitung
In diesem Tutorial zeigen wir dir, wie du das beliebte 4x7Segment-Modul TM1637 Display erfolgreich mit deinem ESP32 Mikrocontroller verbindest und programmierst. Dieser Artikel führt dich Schritt für Schritt durch den gesamten Prozess, von der Hardware-Verkabelung bis zur erfolgreichen Code-Ausführung. Die Programmierung erfolgt dabei wie gewohnt in der Arduino IDE. Wir beginnen mit einer Übersicht der erforderlichen Komponenten und erklären den Schaltungsaufbau. Anschließend widmen wir uns der Code-Erklärung und der notwendigen Bibliotheks-Einbindung, bevor wir die verschiedenen Anwendungsmöglichkeiten des Displays zeigen.
Verschaltung
Teile
1x ESP32
1x TM1637
4x Verbindungskabel
Bibliotheken
ChipNorm_TM1637.h
Code
Übersicht – 7 Segment-Modul TM1637 + ESP32
Bevor wir mit der Verkabelung und dem Code starten, schauen wir uns kurz an, welche Hardwarekomponenten du für dieses Projekt benötigst. Das Tolle an diesem Setup ist, dass sich der Aufwand sehr in Grenzen hält. Um das 4x7Segment-Modul TM1637 mit deinem ESP32 zu betreiben, brauchst du im Grunde nur den Mikrocontroller selbst, das Display-Modul und ein paar Kabel.
Hier ist eine kurze Liste der benötigten Hardware:
1x ESP32 (Mikrocontroller)
1x 4 Digit Display TM1637 (Display-Einheit)
4x Verbindungskabel (Dupont-Kabel)

Pinout – 7 Segment-Modul TM1637
Hier wird ein Bild eingeblendet, welches das Pinout des Sensors zeigt. Das 4x7Segment-Modul TM1637 besitzt insgesamt vier Pins, über die es mit Strom versorgt und angesteuert wird. Neben den beiden Anschlüssen für die Spannung (VCC und GND) gibt es zwei Pins für die Kommunikation: CLK für das Taktsignal und DIO für die Datenübertragung an den ESP32.
Hier ist die Belegung der Pins im Überblick:
VCC: Spannungsversorgung (3.3V oder 5V)
GND: Masseanschluss (Ground)
CLK: Clock / Taktleitung
DIO:Data Input Output / Datenleitung

Hardware Aufbau / Verkabelung / Schaltungsaufbau
Der Aufbau ist sehr übersichtlich und schnell erledigt. Um das 4x7Segment-Modul TM1637 mit deinem ESP32 zu verbinden, nutzt du lediglich vier Kabel. Zunächst verbindest du die Spannungsversorgung: Schließe 3,3V des ESP32 an VCC des Moduls und GND an GND an. Für die Datenkommunikation verwendest du die Pins D15 des ESP32 für CLK und D2 des ESP32 für DIO.
ESP32 D15 → TM1637 CLK-Pin
ESP32 D2→ TM1637 DIO-Pin
ESP32 3,3V → TM1637 VCC-Pin
ESP32 GND → TM1637 GND

Die sorgfältige und korrekte Verdrahtung ist von entscheidender Bedeutung, um sicherzustellen, dass der ESP32 die Signale des 4x7Segment-Modul TM1637 ordnungsgemäß erfassen kann.
Nachdem du diese Verbindungen erfolgreich hergestellt hast, bist du bereit, mit der Programmierung des ESP32 fortzufahren. Im nächsten Abschnitt werden wir ausführlich darauf eingehen, wie du die Bibliothek einbinden und den Code für das 4x7Segment-Modul TM1637 programmieren kannst.
Software / Code / Programmierung
Sobald der erfolgreiche Hardware-Aufbau abgeschlossen ist, können wir uns nun der ESP32 Programmierung zuwenden. In diesem Abschnitt behandeln wir ausführlich die essentiellen Schritte zur Codeerstellung und erläutern die Schlüsselfunktionen, die du verwenden wirst, im Detail.
Schritt 1: IDE Projekt
Öffnen der Arduino-IDE und Erstellen eines neuen Projekts. Um mit der Arduino-IDE zu arbeiten, öffnest du zunächst die Anwendung auf deinem Computer. Falls du die Arduino-IDE noch nicht installiert hast, findest du unter folgendem Link eine Anleitung hierzu: [Link zur Arduino-IDE Installationsanleitung hier einfügen]. Nachdem du die Arduino-IDE geöffnet hast, erstellst du ein neues Projekt, indem du auf „Datei“ und dann auf „Neu“ klickst. Dadurch wird ein neues Sketch-Fenster geöffnet, in dem du deinen Code eingeben kannst.
// Hier kommt dein Code
void setup(){
// Initialisierung
}
void loop(){
// Schleife
}
Schritt 2: Bibliothek einbinden
Um das 4x7Segment-Modul TM1637 anzusteuern, ist es notwendig, eine geeignete Bibliothek in deine Arduino-IDE einzubinden. Gehe dazu in der Menüleiste auf „Sketch“, wähle „Bibliothek einbinden“ aus und klicke dann auf „Bibliotheken verwalten…“. Wir benötigen die Bibliothek ChipNorm_TM1637.h. Suche im Bibliotheksverwalter nach ChipNorm_TM1637 und installiere die entsprechende Version. Nur so erhältst du die erforderlichen Funktionen, um die Display-Ausgabe zu steuern und die Segmente zu schalten.
#include "ChipNorm_TM1637.h"

Schritt 3: Initialisierung
Im Kopf des Sketches, also vor der void setup() Funktion, werden wichtige Vorarbeiten geleistet. Zuerst bindest du mit #include „ChipNorm_TM1637.h“ die notwendige Bibliothek ein. Daraufhin definierst du die beiden Pins (CLK und DIO) des ESP32 mit den zugehörigen GPIO-Nummern, wie du es im Hardware-Abschnitt verdrahtet hast. Abschließend erstellst du das Objekt display der Bibliothek, welches die Pin-Zuordnungen als Parameter erhält.
#define CLK 15 //CLK mit D15 verbinden
#define DIO 2 //DIO mit D2 verbinden
ChipNorm_TM1637 display(CLK, DIO); //Initialisierung der Bibliothek (Objekt "display" der Klasse "ChipNorm_TM1637" erstellt)
Schritt 4: Void Setup
Die void setup() Funktion wird, wie bei jedem ESP32-Programm, nur einmal beim Start des Mikrocontrollers ausgeführt. Hier konfigurierst du die grundlegenden Einstellungen für dein 4x7Segment-Modul TM1637. Mit display.setBrightness(7); stellst du die gewünschte Helligkeit ein, wobei 7 die maximale Stufe darstellt. Direkt danach sorgt display.clear(); dafür, dass das Display sauber startet und keine alten Werte anzeigt.
void setup() {
display.setBrightness(7); //Einstellung der Helligkeit zwischen 1 und 7
display.clear(); //Display-Inhalt löschen
}
Schritt 5: Loop Setup
Die void loop() Funktion enthält den eigentlichen Programmablauf, der sich kontinuierlich wiederholt. Hier werden die verschiedenen Anzeigemöglichkeiten des 4x7Segment-Modul TM1637 demonstriert. Du siehst Beispiele für die reine Zahlenausgabe mit display.write_numbers() und auch einen manuellen Modus zur direkten Steuerung einzelner Segmente. Die display.dot(true/false) Funktion schaltet den Doppelpunkt in der Mitte des Displays an oder aus, um beispielsweise eine Uhrzeit darzustellen.
void loop() {
// Beispiel 1: _ _ 9 _
// d1=Nichts , d2=Nichts , d3=9, d4=Nichts
display.write_numbers(-1, -1, 9, -1);
display.dot(false); // Schaltet den Doppelpunkt aus
delay(2000);
// Beispiel 2: 12:34
// d1=1, d2=2, d3=3, d4=4
display.write_numbers(1, 2, 3, 4);
display.dot(true); // Schaltet den Doppelpunkt ein
delay(2000);
// Beispiel 3: Text A B C D
// d1=1, d2=2, d3=3, d4=4
display.write_text(A, B, C, D);
display.dot(false); // Schaltet den Doppelpunkt aus
delay(2000);
//Beispiel 4: Manueller Modus
// d1=Nichts d2=H d3=I d4:-
display.write_manuell(0b00000000, 0b01110110, 0b00000110, 0b01000000);
display.dot(false); // Schaltet den Doppelpunkt aus
delay(2000);
//Anleitung zum Manuellen Modus:
//
// A
// ---
// F | | B
// -G-
// E | | C
// ---
// D
//Bit,Wert,Segment,Beschreibung
//Bit 0 (1) A,Oberes Segment
//Bit 1 (2) B,Oberes rechtes Segment
//Bit 2 (4) C,Unteres rechtes Segment
//Bit 3 (8) D,Unteres Segment
//Bit 4 (16) E,Unteres linkes Segment
//Bit 5 (32) F,Oberes linkes Segment
//Bit 6 (64) G,Mittleres Segment
//Bit 7 (128) DP (Dot/Punkt) Dezimalpunkt
}
Gesamter Code
Zur besseren Übersicht haben wir hier noch einmal den gesamten Programmier-Code für das 4x7Segment-Modul TM1637 mit dem ESP32 aufgeführt.
#include "ChipNorm_TM1637.h"
#define CLK 15 //CLK mit D15 verbinden
#define DIO 2 //DIO mit D2 verbinden
ChipNorm_TM1637 display(CLK, DIO); //Initialisierung der Bibliothek (Objekt "display" der Klasse "ChipNorm_TM1637" erstellt)
void setup() {
display.setBrightness(7); //Einstellung der Helligkeit zwischen 1 und 7
display.clear(); //Display-Inhalt löschen
}
void loop() {
// Beispiel 1: _ _ 9 _
// d1=Nichts , d2=Nichts , d3=9, d4=Nichts
display.write_numbers(-1, -1, 9, -1);
display.dot(false); // Schaltet den Doppelpunkt aus
delay(2000);
// Beispiel 2: 12:34
// d1=1, d2=2, d3=3, d4=4
display.write_numbers(1, 2, 3, 4);
display.dot(true); // Schaltet den Doppelpunkt ein
delay(2000);
// Beispiel 3: Text A B C D
// d1=1, d2=2, d3=3, d4=4
display.write_text(A, B, C, D);
display.dot(false); // Schaltet den Doppelpunkt aus
delay(2000);
//Beispiel 4: Manueller Modus
// d1=Nichts d2=H d3=I d4:-
display.write_manuell(0b00000000, 0b01110110, 0b00000110, 0b01000000);
display.dot(false); // Schaltet den Doppelpunkt aus
delay(2000);
//Anleitung zum Manuellen Modus:
//
// A
// ---
// F | | B
// -G-
// E | | C
// ---
// D
//Bit,Wert,Segment,Beschreibung
//Bit 0 (1) A,Oberes Segment
//Bit 1 (2) B,Oberes rechtes Segment
//Bit 2 (4) C,Unteres rechtes Segment
//Bit 3 (8) D,Unteres Segment
//Bit 4 (16) E,Unteres linkes Segment
//Bit 5 (32) F,Oberes linkes Segment
//Bit 6 (64) G,Mittleres Segment
//Bit 7 (128) DP (Dot/Punkt) Dezimalpunkt
}
Ausführung / Anwendung
Nachdem der Code nun in die IDE eingegeben ist, muss dieser noch ausgeführt und auf den ESP32 übertragen werden. Sobald du alles kontrolliert und abgespeichert hast, kannst du den Code auf deinen ESP32 laden.
Hierzu gehst du wie folgt vor:
Schritt 1: Kompilieren (Haken): Klicke auf das Häkchen-Symbol, um den Code auf Fehler zu überprüfen und zu kompilieren.
Schritt 2: Hochladen (Pfeil): Wähle das korrekte ESP32 Board und den richtigen Port aus und klicke dann auf den Upload-Pfeil, um das Programm auf den Mikrocontroller zu übertragen.
Schritt 3: Serieller Monitor öffnen: Optional kannst du den Seriellen Monitor öffnen, um die Kommunikation oder Debugging-Nachrichten zu überwachen.
Schritt 4: Auf dem Display wird nun die entsprechenden Inhalte ausgegeben: Nachdem der Upload erfolgreich war, startet dein ESP32 das Programm. Das 4x7Segment-Modul TM1637 beginnt nun damit, die im void loop() definierten Zahlenfolgen, Texte und visuellen Modi auszugeben.




