Ein Besucher meines Blogs hat mir vor Kurzem folgende Frage geschickt:
„Ich lasse mir auf einer 4fach-7Segment-Anzeige mit TM1637-Chip abwechselnd die Temperaturen von zwei Sensoren und die Uhrzeit anzeigen. Klappt soweit alles einwandfrei, nur bekomme ich den Doppelpunkt zwischen Segment 2 und 3 nicht zum Leuchten. Ich benutze die TM1637Display.h-Bibliothek. Kannst du mir einen Tipp geben, mit welchem Befehl ich den Doppelpunkt ein- bzw. ausschalten kann?“
Diese Frage nehme ich gerne zum Anlass, um in diesem Beitrag zu zeigen, wie man den Doppelpunkt zwischen den mittleren Ziffern korrekt aktiviert, insbesondere beim Einsatz der beliebten Bibliothek TM1637Display.h
.
Ich realisiere dafür ein kleines Beispielprojekt, das mit einem Arduino Nano V3 und einer 4-stelligen 7-Segmentanzeige arbeitet. Der Timer zählt im Format MM:SS hoch, wobei der Doppelpunkt zwischen Minuten und Sekunden sichtbar ist und im Sekundentakt blinkt.
Du hast auch eine Frage oder benötigst Unterstützung bei einem deiner Mikrocontroller-Projekte?
Ich freue mich immer über Fragen und Anregungen! Nutze dazu gerne mein Kontaktformular unter:
👉 https://draeger-it.blog/support/
Inhaltsverzeichnis
- Unterstützte 7-Segment-Anzeigen mit TM1637
- Schaltung: TM1637-Modul mit dem Arduino Nano verbinden
- So aktivierst du den Doppelpunkt auf der TM1637-Anzeige
Unterstützte 7-Segment-Anzeigen mit TM1637
Die in diesem Beitrag gezeigte Lösung funktioniert mit 4-stelligen 7-Segment-Anzeigen, die den TM1637-Treiberchip verwenden. Diese Module sind besonders beliebt in Arduino- und ESP-Projekten, da sie mit nur zwei Datenleitungen (CLK und DIO) auskommen und leicht zu programmieren sind.
Typische Merkmale solcher Anzeigen:
- 4 Ziffern (0–9, Buchstaben eingeschränkt darstellbar)
- Ein Doppelpunkt (zwischen Ziffer 2 und 3) – ideal für Zeitdarstellung
- Ansteuerung über TM1637Display.h Bibliothek
- Geringer Stromverbrauch und kompakte Bauform

Wichtig:
Nicht alle TM1637-Module besitzen den funktionsfähigen Doppelpunkt – beim Kauf solltest du darauf achten, dass zwischen der zweiten und dritten Stelle zwei kleine Punkte sichtbar sind. Nur dann lässt sich der Doppelpunkt auch softwareseitig aktivieren.
Schaltung: TM1637-Modul mit dem Arduino Nano verbinden
Die Verbindung zwischen dem Arduino und dem TM1637-Display ist denkbar einfach.

Es werden nur zwei digitale Pins benötigt:
TM1637-Pin | Arduino | Beschreibung |
---|---|---|
GND | GND | Masse |
VCC | 5V | Versorgungsspannung |
DIO | D4 | Datensignal |
CLK | D5 | Taktleitung |
So aktivierst du den Doppelpunkt auf der TM1637-Anzeige
Verwendete Bibliothek: TM1637Display
Für dieses Projekt verwende ich die beliebte Bibliothek TM1637Display von Avishay Orpaz, die speziell für 4-stellige 7-Segment-Anzeigen mit TM1637-Chip entwickelt wurde.
🔗 GitHub Repository: https://github.com/avishorp/TM1637
Diese Bibliothek stellt einfache Funktionen zur Verfügung, mit denen sich Zahlen, Texte und auch der Doppelpunkt bequem anzeigen lassen.


Aktivieren / deaktivieren des Doppelpunktes
Ein häufiges Problem beim Einsatz der TM1637Display.h-Bibliothek: Der Doppelpunkt zwischen der zweiten und dritten Ziffer bleibt dunkel, obwohl die Anzeige korrekt funktioniert. Der Grund liegt in der verwendeten Funktion – denn nicht jede Methode der Bibliothek kann den Doppelpunkt ansteuern.
Die beiden Methoden im Vergleich:
display.showNumberDec(value, true, 4, 0);
Diese Funktion zeigt eine Zahl im Dezimalformat an – ohne Möglichkeit, den Doppelpunkt zu aktivieren oder zu steuern. Sie ist ideal für reine Zahlenwerte wie 1234 oder 0007, aber nicht geeignet für Zeitformate wie MM:SS.
display.showNumberDecEx(value, dots, true, 4, 0);
Die erweiterte Version showNumberDecEx()
erlaubt dagegen die gezielte Steuerung des Doppelpunkts über den Parameter dots
. Hier kannst du mit einem einfachen Bitwert den Doppelpunkt aktivieren oder deaktivieren.
Der entscheidende Parameter:
Wert von dots | Wirkung auf den Doppelpunkt |
---|---|
0b00000000 oder 0 | Doppelpunkt aus |
0b01000000 oder 64 | Doppelpunkt an (Segment G) |
Das Bit 0b01000000
steht für Segment G, welches beim TM1637-Display für den mittleren Doppelpunkt zuständig ist.
Beispiel: Zeit mit aktivem Doppelpunkt anzeigen
int value = 1234; // z. B. 12:34 int colon = 0b01000000; // Doppelpunkt aktivieren display.showNumberDecEx(value, colon, true, 4, 0);
💡 Tipp: Wer den Doppelpunkt blinken lassen möchte, kann den Wert von colon
einfach im Sekundentakt zwischen 64
und 0
umschalten – wie im Beispielprojekt gezeigt.
Quellcode
/* * Titel: Fehlender Doppelpunkt bei TM1637? Lösung mit TM1637Display.h Schritt für Schritt * Beschreibung: * Dieses Beispiel zeigt, wie man mit einem Color Nano V4.0 und einer 4-stelligen 7-Segmentanzeige (TM1637) * einen einfachen Timer realisiert. Die Sekunden werden im Format MM:SS dargestellt. * Der Doppelpunkt zwischen den beiden mittleren Stellen wird mithilfe der TM1637Display.h-Bibliothek korrekt aktiviert. * Nach einem Reset beginnt der Timer wieder bei 00:00. * * Autor: Stefan Draeger * Webseite: https://draeger-it.blog * Beitrag: https://draeger-it.blog/fehlender-doppelpunkt-bei-tm1637-loesung-mit-tm1637display-h-schritt-fuer-schritt/ */ #include <TM1637Display.h> // Pin-Definitionen für das TM1637-Modul #define segmentanzeige_CLK 5 #define segmentanzeige_DIO 4 // Bitmaske für den Doppelpunkt (Segment G) #define DISPLAY_COLON 0b01000000 // Initialisierung des Displays mit den definierten Pins TM1637Display display(segmentanzeige_CLK, segmentanzeige_DIO); // Zählvariable für vergangene Sekunden int seconds = 0; void setup() { Serial.begin(9600); // Serielle Schnittstelle für Debug-Zwecke // Maximale Helligkeit des Displays (0x00 bis 0x0f) display.setBrightness(0x0f); // Kurzer Starttest: alle Segmente für 1 Sekunde anzeigen uint8_t allSegments[] = { 0xff, 0xff, 0xff, 0xff }; display.setSegments(allSegments); delay(1000); } void loop() { // Sekundenzähler erhöhen seconds++; // Umrechnung der Sekunden in Minuten und Sekunden int minutes = seconds / 60; int remainingSeconds = seconds % 60; // Format: MMSS, z. B. 01:45 → 0145 int value = (minutes * 100) + remainingSeconds; // Doppelpunkt aktivieren bei gerader Sekunde (blinkender Effekt) int colon = (seconds % 2 == 0) ? DISPLAY_COLON : 0; // Wert auf dem Display anzeigen: // - value: MMSS-Wert // - colon: Doppelpunkt-Bit aktivieren/deaktivieren // - true: führende Nullen anzeigen // - 4: Länge (alle 4 Stellen) // - 0: Startposition (von ganz links) display.showNumberDecEx(value, colon, true, 4, 0); // Eine Sekunde warten delay(1000); }