ESP32 MicroPython - 4-stellige 7-Segment-Anzeige TM1637

Der ESP32 ist ein leistungsstarker Mikrocontroller mit WLAN, der in IoT- und Embedded-Projekten weit verbreitet ist. In Kombination mit MicroPython und dem DIYables TM1637 4-stelligen 7-Segment-Anzeigemodul können Sie ganz einfach Zahlen, Text, Temperatur und Uhrzeit auf einer hellen LED-Anzeige darstellen.

Dieses Tutorial führt Sie durch:

ESP32 MicroPython TM1637 4-stellige 7-Segment-Anzeige

Das TM1637 4-stellige 7-Segment-Anzeigemodul

Der TM1637 ist ein spezieller LED-Treiber-IC, der sowohl das Multiplexing als auch die Segmentansteuerung für bis zu 6 Stellen übernimmt. Dieses Modul verwendet ihn, um eine 4-stellige 7-Segment-LED-Anzeige mit einem Doppelpunkt zwischen der zweiten und dritten Stelle anzusteuern, was es ideal für Uhren- und Timer-Anwendungen macht.

Im Gegensatz zu Anzeigen auf Schieberegister-Basis (wie 74HC595) verfügt der TM1637 über einen eingebauten Anzeigespeicher. Sobald Sie Daten auf den Chip schreiben, hält er die Anzeige automatisch beleuchtet — es ist kein Timer-Interrupt und keine Aktualisierungsschleife nötig. Der TM1637 unterstützt außerdem 8 Helligkeitsstufen (0–7) und verwendet nur 2 GPIO-Pins (CLK und DIO) für die Kommunikation.

Das Modul kommuniziert über ein 2-Draht-Seriellprotokoll, das I2C ähnelt (aber kein Standard-I2C ist). Die Bibliothek übernimmt alle Protokolldetails — Sie rufen einfach Methoden wie print() und print_time() auf.

Pinbeschreibung

Pin Zweck ESP32-Anschluss
CLK Serieller Takteingang Mit GPIO21 verbinden
DIO Serieller Datenein-/-ausgang Mit GPIO22 verbinden
VCC Stromversorgung 3,3V bis 5V Mit 3.3V verbinden
GND Masse Mit GND verbinden
TM1637 4-stellige 7-Segment-Anzeige Pinbelegung

Verdrahtung

Der ESP32 arbeitet mit 3,3V-Logik. Das TM1637-Modul funktioniert sowohl mit 3,3V als auch mit 5V und ist daher ohne Pegelwandler direkt mit dem ESP32 kompatibel.

TM1637-Modul ESP32 Hinweise
CLK GPIO21 Taktleitung
DIO GPIO22 Daten-E/A-Leitung
VCC 3.3V Stromversorgung
GND GND Masse
ESP32 TM1637 4-stellige 7-Segment-Anzeige Schaltplan

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

Tipp: Sie können beliebige freie GPIO-Pins des ESP32 verwenden. Passen Sie einfach die Pinnummern im Code an.

Schnelle Schritte

Hier finden Sie eine Anleitung, wie Sie Ihren MicroPython-Code mit der Thonny IDE auf dem ESP32 einrichten und ausführen:

  • Stellen Sie sicher, dass die Thonny IDE auf Ihrem Computer installiert ist.
  • Vergewissern Sie sich, dass die MicroPython-Firmware auf Ihrem ESP32-Board installiert ist.
  • Wenn Sie zum ersten Mal einen ESP32 mit MicroPython verwenden, lesen Sie die Anleitung ESP32 MicroPython Getting Started mit Schritt-für-Schritt-Anweisungen.
  • Verbinden Sie das ESP32-Board gemäß dem Schaltplan mit dem TM1637-Modul.
  • Verbinden Sie das ESP32-Board über ein USB-Kabel mit Ihrem Computer.
  • Öffnen Sie die Thonny IDE auf Ihrem Computer.
  • Gehen Sie in der Thonny IDE zu Tools Options.
  • Wählen Sie im Reiter Interpreter im Dropdown-Menü MicroPython (ESP32) aus.
  • Stellen Sie sicher, dass der richtige Port ausgewählt ist. Die Thonny IDE erkennt ihn normalerweise automatisch, eventuell müssen Sie ihn aber manuell auswählen (z. B. COM3 unter Windows oder /dev/ttyUSB0 unter Linux).
  • Navigieren Sie in der Thonny IDE zu Tools Manage packages.
  • Suchen Sie nach "DIYables-MicroPython-4Digit7Segment-TM1637" und finden Sie dann die TM1637 4-Digit 7-Segment Display-Bibliothek von DIYables.
  • Klicken Sie auf DIYables-MicroPython-4Digit7Segment-TM1637 und dann auf die Schaltfläche Install, um die Bibliothek zu installieren.
ESP32 TM1637 4-stellige 7-Segment-Anzeige Bibliothek
  • Kopieren Sie den bereitgestellten MicroPython-Code und fügen Sie ihn in den Editor von Thonny ein.
  • Speichern Sie den Code auf Ihrem ESP32:
    • Klicken Sie auf die Schaltfläche Save oder drücken Sie Ctrl+S.
    • Wählen Sie im Speicherdialog MicroPython device.
    • Nennen Sie die Datei main.py.
  • Klicken Sie auf die grüne Schaltfläche Run (oder drücken Sie F5), um das Skript auszuführen.
  • Beobachten Sie das Ergebnis — die 4-stellige 7-Segment-Anzeige zeigt je nach Beispiel Zahlen, Text oder die Uhrzeit an.

Vorlage für den Startcode

from DIYables_MicroPython_4Digit7Segment_TM1637 import Display4Digit7SegmentTM1637 import time display = Display4Digit7SegmentTM1637(clk_pin=21, dio_pin=22) #Display stays on automatically — no refresh loop needed display.print(1234)

ESP32-Code — Ganzzahlen anzeigen

""" Example: Display integer numbers on 4-digit 7-segment display with TM1637. Works with: ESP32, Raspberry Pi Pico, Arduino Nano ESP32, Arduino Nano R1 WiFi Product page: https://diyables.io/products/4-digit-7-segment-display-led-tm1637-with-colon Wiring guide: ESP32: TM1637 Module ESP32 ───────────── ────── CLK -> GPIO21 DIO -> GPIO22 VCC -> 3.3V GND -> GND Raspberry Pi Pico: TM1637 Module Raspberry Pi Pico ───────────── ───────────────── CLK -> GP1 DIO -> GP0 VCC -> 3.3V (pin 36) GND -> GND (pin 38) Arduino Nano ESP32: TM1637 Module Arduino Nano ESP32 ───────────── ────────────────── CLK -> D21 (GPIO21) DIO -> D22 (GPIO22) VCC -> 3.3V GND -> GND Arduino Nano RP2040 Connect: TM1637 Module Arduino Nano RP2040 Connect ───────────── ─────────────────────────── CLK -> D1 (GP1) DIO -> D0 (GP0) VCC -> 3.3V GND -> GND """ from DIYables_MicroPython_4Digit7Segment_TM1637 import Display4Digit7SegmentTM1637 import time # Pin configuration - change the pins to match your wiring and board # ESP32 / Arduino Nano ESP32: CLK=21, DIO=22 # Raspberry Pi Pico / Nano RP2040: CLK=1, DIO=0 CLK_PIN = 21 DIO_PIN = 22 display = Display4Digit7SegmentTM1637(CLK_PIN, DIO_PIN) while True: # Display integers numbers = [0, 42, 1234, -5, -123, 9999] for num in numbers: display.print(num) time.sleep(2) # Display with zero padding display.print(42, zero_pad=True) # Shows "0042" time.sleep(2)

Ausprobieren

  • Verdrahten Sie das Modul und verbinden Sie den ESP32 über USB.
  • Laden Sie den Code mit der Thonny IDE hoch.
  • Die Anzeige durchläuft mehrere Ganzzahlen (0, 42, 1234, -5, -123, 9999) und zeigt dann die mit Nullen aufgefüllte 42 als "0042" an.

Referenz zur Ganzzahlanzeige

Methodenaufruf Anzeige Hinweise
display.print(0) 0 Rechtsbündige einzelne Ziffer
display.print(42) 42 Rechtsbündig
display.print(1234) 1234 Alle 4 Stellen belegt
display.print(-5) -5 Minuszeichen + Ziffer
display.print(-123) -123 Maximal 3-stellige negative Zahl
display.print(9999) 9999 Größter darstellbarer Wert
display.print(10000) Err Überlauffehler
display.print(42, zero_pad=True) 0042 Mit Nullen auf 4 Stellen aufgefüllt

ESP32-Code — Text, Gradzeichen und Temperatur anzeigen

""" Example: Display text, special characters, and temperature on 4-digit 7-segment display. Works with: ESP32, Raspberry Pi Pico, Arduino Nano ESP32, Arduino Nano R1 WiFi Product page: https://diyables.io/products/4-digit-7-segment-display-led-tm1637-with-colon Wiring guide: ESP32: TM1637 Module ESP32 ───────────── ────── CLK -> GPIO21 DIO -> GPIO22 VCC -> 3.3V GND -> GND Raspberry Pi Pico: TM1637 Module Raspberry Pi Pico ───────────── ───────────────── CLK -> GP1 DIO -> GP0 VCC -> 3.3V (pin 36) GND -> GND (pin 38) Arduino Nano ESP32: TM1637 Module Arduino Nano ESP32 ───────────── ────────────────── CLK -> D21 (GPIO21) DIO -> D22 (GPIO22) VCC -> 3.3V GND -> GND Arduino Nano RP2040 Connect: TM1637 Module Arduino Nano RP2040 Connect ───────────── ─────────────────────────── CLK -> D1 (GP1) DIO -> D0 (GP0) VCC -> 3.3V GND -> GND """ from DIYables_MicroPython_4Digit7Segment_TM1637 import Display4Digit7SegmentTM1637 import time # Pin configuration - change the pins to match your wiring and board # ESP32 / Arduino Nano ESP32: CLK=21, DIO=22 # Raspberry Pi Pico / Nano RP2040: CLK=1, DIO=0 CLK_PIN = 21 DIO_PIN = 22 display = Display4Digit7SegmentTM1637(CLK_PIN, DIO_PIN) while True: # Display text strings texts = ["HELP", "Hi", "COOL", "done"] for text in texts: display.print(text) time.sleep(2) # Display temperature with degree symbol display.print_temperature(25, 'C') # Shows "25°C" time.sleep(2) display.print_temperature(72, 'F') # Shows "72°F" time.sleep(2) # Display string with degree constant display.print("25" + display.DEGREE + "C") # Same as print_temperature(25, 'C') time.sleep(2)

Referenz zu Text und Temperatur

Methodenaufruf Anzeige Hinweise
display.print("HELP") HELP Textanzeige
display.print("Hi") Hi Linksbündig, 2 Zeichen
display.print("COOL") COOL 4 Zeichen
display.print_temperature(25, 'C') 25°C Celsius mit Gradzeichen
display.print_temperature(72, 'F') 72°F Fahrenheit
display.print_temperature(-5, 'C') -5°C Negative Temperatur
display.print_temperature(100) 100° 3-stellig, kein Platz für die Einheit

Das Gradzeichen kann über die Konstante display.DEGREE auch direkt in Zeichenketten verwendet werden.

ESP32-Code — Uhrzeit mit blinkendem Doppelpunkt anzeigen

""" Example: Display time with blinking colon separator on 4-digit 7-segment display. This module has a colon separator between digit 1 and digit 2, ideal for clock display. Works with: ESP32, Raspberry Pi Pico, Arduino Nano ESP32, Arduino Nano R1 WiFi Product page: https://diyables.io/products/4-digit-7-segment-display-led-tm1637-with-colon Wiring guide: ESP32: TM1637 Module ESP32 ───────────── ────── CLK -> GPIO21 DIO -> GPIO22 VCC -> 3.3V GND -> GND Raspberry Pi Pico: TM1637 Module Raspberry Pi Pico ───────────── ───────────────── CLK -> GP1 DIO -> GP0 VCC -> 3.3V (pin 36) GND -> GND (pin 38) Arduino Nano ESP32: TM1637 Module Arduino Nano ESP32 ───────────── ────────────────── CLK -> D21 (GPIO21) DIO -> D22 (GPIO22) VCC -> 3.3V GND -> GND Arduino Nano RP2040 Connect: TM1637 Module Arduino Nano RP2040 Connect ───────────── ─────────────────────────── CLK -> D1 (GP1) DIO -> D0 (GP0) VCC -> 3.3V GND -> GND """ from DIYables_MicroPython_4Digit7Segment_TM1637 import Display4Digit7SegmentTM1637 import time # Pin configuration - change the pins to match your wiring and board # ESP32 / Arduino Nano ESP32: CLK=21, DIO=22 # Raspberry Pi Pico / Nano RP2040: CLK=1, DIO=0 CLK_PIN = 21 DIO_PIN = 22 display = Display4Digit7SegmentTM1637(CLK_PIN, DIO_PIN) hours = 12 minutes = 30 colon_on = True while True: display.print_time(hours, minutes, colon=colon_on) time.sleep(0.5) # Toggle colon every 500ms for blinking effect colon_on = not colon_on

Referenz zur Zeitanzeige

Methodenaufruf Anzeige Hinweise
display.print_time(12, 30) 1230 Doppelpunkt AN
display.print_time(9, 5) 0905 Stunden und Minuten mit Nullen aufgefüllt
display.print_time(12, 30, colon=False) 12 30 Doppelpunkt AUS (für Blinkeffekt)

Schalten Sie den Parameter colon alle 500ms um, um einen blinkenden Doppelpunkt zu erzeugen, wie man ihn häufig bei Uhrenanzeigen sieht.

ESP32-Code — Einzelne Stellen und Doppelpunkt setzen

""" Example: Set individual digits and colon on 4-digit 7-segment display with TM1637. Works with: ESP32, Raspberry Pi Pico, Arduino Nano ESP32, Arduino Nano R1 WiFi Product page: https://diyables.io/products/4-digit-7-segment-display-led-tm1637-with-colon Wiring guide: ESP32: TM1637 Module ESP32 ───────────── ────── CLK -> GPIO21 DIO -> GPIO22 VCC -> 3.3V GND -> GND Raspberry Pi Pico: TM1637 Module Raspberry Pi Pico ───────────── ───────────────── CLK -> GP1 DIO -> GP0 VCC -> 3.3V (pin 36) GND -> GND (pin 38) Arduino Nano ESP32: TM1637 Module Arduino Nano ESP32 ───────────── ────────────────── CLK -> D21 (GPIO21) DIO -> D22 (GPIO22) VCC -> 3.3V GND -> GND Arduino Nano RP2040 Connect: TM1637 Module Arduino Nano RP2040 Connect ───────────── ─────────────────────────── CLK -> D1 (GP1) DIO -> D0 (GP0) VCC -> 3.3V GND -> GND """ from DIYables_MicroPython_4Digit7Segment_TM1637 import Display4Digit7SegmentTM1637 import time # Pin configuration - change the pins to match your wiring and board # ESP32 / Arduino Nano ESP32: CLK=21, DIO=22 # Raspberry Pi Pico / Nano RP2040: CLK=1, DIO=0 CLK_PIN = 21 DIO_PIN = 22 display = Display4Digit7SegmentTM1637(CLK_PIN, DIO_PIN) while True: # Set individual numbers on each digit position display.clear() display.set_number(0, 1) display.set_number(1, 2) display.set_number(2, 3) display.set_number(3, 4) # Display shows "1234" time.sleep(2) # Turn colon on — display shows "12:34" display.set_colon(True) time.sleep(2) # Turn colon off — display shows "1234" display.set_colon(False) time.sleep(2) # Set individual characters on each digit position display.clear() display.set_char(0, 'H') display.set_char(1, 'E') display.set_char(2, 'L') display.set_char(3, 'P') # Display shows "HELP" time.sleep(2) # Mix characters and numbers with colon display.clear() display.set_char(0, 'A') display.set_number(1, 3) display.set_char(2, 'b') display.set_number(3, 7) display.set_colon(True) # Display shows "A3:b7" time.sleep(2) # Blinking colon effect with individual digits display.clear() display.set_number(0, 1) display.set_number(1, 2) display.set_number(2, 3) display.set_number(3, 0) for _ in range(5): # Blink 5 times display.set_colon(True) time.sleep(0.5) display.set_colon(False) time.sleep(0.5) time.sleep(1)

Referenz zu einzelnen Stellen

Methodenaufruf Beschreibung
display.set_number(position, number) Eine einzelne Ziffer (0-9) an Position 0-3 setzen
display.set_char(position, char) Ein Zeichen an Position 0-3 setzen
display.set_colon(True) Den Doppelpunkt zwischen Stelle 1 und Stelle 2 einschalten
display.set_colon(False) Den Doppelpunkt ausschalten

Sie können set_number(), set_char() und set_colon() kombinieren, um eigene Anzeigen Stelle für Stelle aufzubauen.

ESP32-Code — Anzeige blinken lassen

""" Example: Blink integer and text on 4-digit 7-segment display. Uses off() to stop the display and on() to restart it. Works with: ESP32, Raspberry Pi Pico, Arduino Nano ESP32, Arduino Nano R1 WiFi Product page: https://diyables.io/products/4-digit-7-segment-display-led-tm1637-with-colon Wiring guide: ESP32: TM1637 Module ESP32 ───────────── ────── CLK -> GPIO21 DIO -> GPIO22 VCC -> 3.3V GND -> GND Raspberry Pi Pico: TM1637 Module Raspberry Pi Pico ───────────── ───────────────── CLK -> GP1 DIO -> GP0 VCC -> 3.3V (pin 36) GND -> GND (pin 38) Arduino Nano ESP32: TM1637 Module Arduino Nano ESP32 ───────────── ────────────────── CLK -> D21 (GPIO21) DIO -> D22 (GPIO22) VCC -> 3.3V GND -> GND Arduino Nano RP2040 Connect: TM1637 Module Arduino Nano RP2040 Connect ───────────── ─────────────────────────── CLK -> D1 (GP1) DIO -> D0 (GP0) VCC -> 3.3V GND -> GND """ from DIYables_MicroPython_4Digit7Segment_TM1637 import Display4Digit7SegmentTM1637 import time # Pin configuration - change the pins to match your wiring and board # ESP32 / Arduino Nano ESP32: CLK=21, DIO=22 # Raspberry Pi Pico / Nano RP2040: CLK=1, DIO=0 CLK_PIN = 21 DIO_PIN = 22 display = Display4Digit7SegmentTM1637(CLK_PIN, DIO_PIN) while True: # Blink an integer display.print(1234) for _ in range(5): # Blink 5 times display.off() time.sleep(0.3) display.on() time.sleep(0.3) time.sleep(1) # Blink text display.print("HELP") for _ in range(5): # Blink 5 times display.off() time.sleep(0.3) display.on() time.sleep(0.3) time.sleep(1)

Referenz zum Blinken

Verwenden Sie display.off(), um die Anzeige auszuschalten, und display.on(), um sie wieder einzuschalten. Die Anzeigedaten bleiben erhalten — on() stellt den vorherigen Inhalt wieder her, ohne dass print() erneut aufgerufen werden muss.

Bibliotheksreferenz

Siehe DIYables_MicroPython_4Digit7Segment_TM1637 Library Reference für die vollständige API-Dokumentation einschließlich aller Konstruktoren, Methoden und Konstanten.

Nächste Schritte

  • Kombinieren Sie es mit einem DS3231 RTC-Modul, um eine Echtzeituhr zu bauen.
  • Fügen Sie einen DHT11/DHT22-Sensor hinzu, um Live-Temperaturwerte anzuzeigen.
  • Verwenden Sie Taster, um zwischen Uhrmodus und Temperaturmodus umzuschalten.

※ 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!