ESP32 MicroPython - 4-stellige 7-Segment-Anzeige 74HC595

Der ESP32 ist ein leistungsstarker, WLAN-fähiger Mikrocontroller, der in IoT- und Embedded-Projekten weit verbreitet ist. In Kombination mit MicroPython und dem DIYables Modul für die 4-stellige 7-Segment-Anzeige (74HC595) können Sie ganz einfach Zahlen, Text und Sensorwerte auf einer hellen LED-Anzeige darstellen.

Dieses Tutorial führt Sie durch:

ESP32 MicroPython 4-stellige 7-Segment-Anzeige 74HC595

Das Modul mit 4-stelliger 7-Segment-Anzeige 74HC595

Das Modul DIYables 4-Digit 7-Segment Display 74HC595 ist eine kompakte LED-Anzeige, die von zwei 74HC595 Schieberegistern angesteuert wird. Es zeigt 4 Ziffern und 4 Dezimalpunkte. Da die Schieberegister die gesamte Ansteuerung der Segmente und Ziffern übernehmen, benötigt der ESP32 nur 3 GPIO-Pins (Takt, Latch und Daten) statt der 12+ Pins, die eine direkt angesteuerte Anzeige erfordern würde.

Der ESP32 kommuniziert mit dem Modul, indem er Segmentdaten und Ziffernauswahldaten seriell hinausschiebt. Die Bibliothek erledigt dies automatisch mithilfe eines Hardware-Timers für das Multiplexing — jede Ziffer wird nacheinander mit hoher Geschwindigkeit aktualisiert, sodass alle 4 Ziffern gleichzeitig zu leuchten scheinen.

Hauptmerkmale des Moduls:

  • Nur 3 Leitungen für Daten (SCLK, RCLK, DIO) plus Stromversorgung.
  • 4 Dezimalpunkte — einzeln steuerbar.
  • Varianten mit gemeinsamer Anode oder gemeinsamer Kathode erhältlich.
  • Kompatibel mit 5V oder 3,3V.

Pinbeschreibung

Pin Zweck ESP32-Verbindung
SCLK (SH_CP) Serieller Takteingang Mit GPIO18 verbinden
RCLK (ST_CP) Registertakt / Latch Mit GPIO17 verbinden
DIO (DS) Serieller Dateneingang Mit GPIO16 verbinden
VCC Stromversorgungseingang 3.3V bis 5V Mit 3.3V verbinden
GND Masse Mit GND verbinden
Pinbelegung der 4-stelligen 7-Segment-Anzeige 74HC595

Verdrahtung

Der ESP32 arbeitet mit 3,3V-Logik. Das 74HC595 Modul funktioniert sowohl mit 3,3V als auch mit 5V, sodass Sie es direkt verdrahten können — keine Pegelwandlung nötig.

74HC595 Modul ESP32 Hinweise
SCLK (SH_CP) GPIO18 Serieller Takt
RCLK (ST_CP) GPIO17 Latch / Registertakt
DIO (DS) GPIO16 Serielle Daten
VCC 3.3V Stromversorgung
GND GND Masse
Schaltplan ESP32 4-stellige 7-Segment-Anzeige 74HC595

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

Tipp: Sie können beliebige verfügbare GPIO-Pins am ESP32 verwenden. Passen Sie einfach die Pin-Nummern im Code an.

Schnelle Schritte

Hier ist 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 Ihr ESP32 Board geladen ist.
  • Wenn Sie zum ersten Mal einen ESP32 mit MicroPython verwenden, lesen Sie die Anleitung ESP32 MicroPython Erste Schritte für eine Schritt-für-Schritt-Anleitung.
  • Verbinden Sie das ESP32 Board gemäß dem bereitgestellten Schaltplan mit dem Modul der 4-stelligen 7-Segment-Anzeige.
  • 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, aber eventuell müssen Sie ihn 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-74HC595" und finden Sie dann die Bibliothek für die 4-stellige 7-Segment-Anzeige von DIYables.
  • Klicken Sie auf DIYables-MicroPython-4Digit7Segment-74HC595 und dann auf die Schaltfläche Install, um die Bibliothek zu installieren.
ESP32 Bibliothek für die 4-stellige 7-Segment-Anzeige 74HC595
  • Kopieren Sie den bereitgestellten MicroPython-Code und fügen Sie ihn in den Editor von Thonny ein.
  • Speichern Sie den Code auf Ihrem ESP32, indem Sie:
    • Auf die Schaltfläche Save klicken oder Ctrl+S drücken.
    • Im Speicherdialog MicroPython device auswählen.
    • Die Datei main.py nennen.
  • Klicken Sie auf die grüne Schaltfläche Run (oder drücken Sie F5), um das Skript auszuführen.
  • Beobachten Sie die Anzeige — Sie sollten Zahlen, Text oder andere Inhalte auf der 7-Segment-Anzeige sehen.

Code-Vorlage für den Einstieg

from DIYables_MicroPython_4Digit7Segment_74HC595 import Display4Digit7Segment74HC595 import time display = Display4Digit7Segment74HC595(sclk_pin=18, rclk_pin=17, dio_pin=16, common_anode=True) # The display auto-refreshes in the background using a hardware Timer. # Just call display.print() and the display stays on automatically. display.print(1234)

ESP32 Code — Ganzzahlen anzeigen

""" Example: Display integer numbers on 4-digit 7-segment display with 74HC595. Works with: ESP32, Raspberry Pi Pico, Arduino Nano ESP32, Arduino Nano R1 WiFi Wiring guide: ESP32: 74HC595 Module ESP32 ────────────── ────── SCLK (SH_CP) -> GPIO18 RCLK (ST_CP) -> GPIO17 DIO (DS) -> GPIO16 VCC -> 3.3V GND -> GND Raspberry Pi Pico: 74HC595 Module Raspberry Pi Pico ────────────── ───────────────── SCLK (SH_CP) -> GP2 RCLK (ST_CP) -> GP1 DIO (DS) -> GP0 VCC -> 3.3V (pin 36) GND -> GND (pin 38) Arduino Nano ESP32: 74HC595 Module Arduino Nano ESP32 ────────────── ────────────────── SCLK (SH_CP) -> D18 (GPIO18) RCLK (ST_CP) -> D17 (GPIO17) DIO (DS) -> D16 (GPIO16) VCC -> 3.3V GND -> GND Arduino Nano RP2040 Connect: 74HC595 Module Arduino Nano RP2040 Connect ────────────── ─────────────────────────── SCLK (SH_CP) -> D2 (GP2) RCLK (ST_CP) -> D1 (GP1) DIO (DS) -> D0 (GP0) VCC -> 3.3V GND -> GND """ from DIYables_MicroPython_4Digit7Segment_74HC595 import Display4Digit7Segment74HC595 import time # Pin configuration - change the pins to match your wiring and board # ESP32 / Arduino Nano ESP32: SCLK=18, RCLK=17, DIO=16 # Raspberry Pi Pico / Nano RP2040: SCLK=2, RCLK=1, DIO=0 SCLK_PIN = 18 RCLK_PIN = 17 DIO_PIN = 16 display = Display4Digit7Segment74HC595(SCLK_PIN, RCLK_PIN, DIO_PIN, common_anode=True) 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 zeigt nacheinander mehrere Ganzzahlen (0, 42, 1234, -5, -123, 9999) und eine Zahl mit führenden Nullen (0042).

Ganzzahlanzeige

Die Methode print() erkennt Ganzzahlen automatisch und formatiert sie rechtsbündig auf der Anzeige.

Methodenaufruf Anzeige zeigt Hinweise
display.print(0) " 0" Einzelne Ziffer, rechtsbündig
display.print(42) " 42" Zwei Ziffern
display.print(1234) "1234" Alle vier Ziffern
display.print(-5) " -5" Negativ mit Minuszeichen
display.print(-123) "-123" Negativ, volle Breite
display.print(9999) "9999" Maximaler positiver Wert
display.print(42, zero_pad=True) "0042" Führende Nullen

Ganzzahlbereich: -999 bis 9999. Werte außerhalb dieses Bereichs zeigen "Err" an.

ESP32 Code — Gleitkommazahlen anzeigen

""" Example: Display float numbers on 4-digit 7-segment display with 74HC595. Works with: ESP32, Raspberry Pi Pico, Arduino Nano ESP32, Arduino Nano R1 WiFi Wiring guide: ESP32: 74HC595 Module ESP32 ────────────── ────── SCLK (SH_CP) -> GPIO18 RCLK (ST_CP) -> GPIO17 DIO (DS) -> GPIO16 VCC -> 3.3V GND -> GND Raspberry Pi Pico: 74HC595 Module Raspberry Pi Pico ────────────── ───────────────── SCLK (SH_CP) -> GP2 RCLK (ST_CP) -> GP1 DIO (DS) -> GP0 VCC -> 3.3V (pin 36) GND -> GND (pin 38) Arduino Nano ESP32: 74HC595 Module Arduino Nano ESP32 ────────────── ────────────────── SCLK (SH_CP) -> D18 (GPIO18) RCLK (ST_CP) -> D17 (GPIO17) DIO (DS) -> D16 (GPIO16) VCC -> 3.3V GND -> GND Arduino Nano RP2040 Connect: 74HC595 Module Arduino Nano RP2040 Connect ────────────── ─────────────────────────── SCLK (SH_CP) -> D2 (GP2) RCLK (ST_CP) -> D1 (GP1) DIO (DS) -> D0 (GP0) VCC -> 3.3V GND -> GND """ from DIYables_MicroPython_4Digit7Segment_74HC595 import Display4Digit7Segment74HC595 import time # Pin configuration - change the pins to match your wiring and board # ESP32 / Arduino Nano ESP32: SCLK=18, RCLK=17, DIO=16 # Raspberry Pi Pico / Nano RP2040: SCLK=2, RCLK=1, DIO=0 SCLK_PIN = 18 RCLK_PIN = 17 DIO_PIN = 16 display = Display4Digit7Segment74HC595(SCLK_PIN, RCLK_PIN, DIO_PIN, common_anode=True) while True: # Display floats with auto decimal places floats = [1.5, 12.34, 3.141, -1.2, 0.5] for num in floats: display.print(num) time.sleep(2) # Display with specific decimal places display.print(23.5, decimal_places=1) # Shows "23.5" time.sleep(2) # Display 1.5 with auto decimal places display.print(1.5) # Shows "1.5" time.sleep(2) # Display 1.5 with 2 decimal places display.print(1.5, decimal_places=2) # Shows "1.50" time.sleep(2) # Display 1.5 with 2 decimal places and zero padding display.print(1.5, decimal_places=2, zero_pad=True) # Shows "01.50" time.sleep(2)

Gleitkommaanzeige

Der Dezimalpunkt wird automatisch an der richtigen Stelle gesetzt. Sie können die Bibliothek die Anzahl der Nachkommastellen wählen lassen oder sie manuell festlegen.

Methodenaufruf Anzeige zeigt Hinweise
display.print(1.5) " 1.5" Automatische Nachkommastellen
display.print(12.34) "12.34" Automatisch — 2 Nachkommastellen
display.print(3.141) "3.141" Automatisch — 3 Nachkommastellen
display.print(23.5, decimal_places=1) "23.5" Erzwungen 1 Nachkommastelle
display.print(1.5, decimal_places=2) " 1.50" Erzwungen 2 Nachkommastellen mit nachgestellter Null
display.print(1.5, decimal_places=2, zero_pad=True) "01.50" Mit führenden Nullen und 2 Nachkommastellen

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 Wiring guide: ESP32: 74HC595 Module ESP32 ────────────── ────── SCLK (SH_CP) -> GPIO18 RCLK (ST_CP) -> GPIO17 DIO (DS) -> GPIO16 VCC -> 3.3V GND -> GND Raspberry Pi Pico: 74HC595 Module Raspberry Pi Pico ────────────── ───────────────── SCLK (SH_CP) -> GP2 RCLK (ST_CP) -> GP1 DIO (DS) -> GP0 VCC -> 3.3V (pin 36) GND -> GND (pin 38) Arduino Nano ESP32: 74HC595 Module Arduino Nano ESP32 ────────────── ────────────────── SCLK (SH_CP) -> D18 (GPIO18) RCLK (ST_CP) -> D17 (GPIO17) DIO (DS) -> D16 (GPIO16) VCC -> 3.3V GND -> GND Arduino Nano RP2040 Connect: 74HC595 Module Arduino Nano RP2040 Connect ────────────── ─────────────────────────── SCLK (SH_CP) -> D2 (GP2) RCLK (ST_CP) -> D1 (GP1) DIO (DS) -> D0 (GP0) VCC -> 3.3V GND -> GND """ from DIYables_MicroPython_4Digit7Segment_74HC595 import Display4Digit7Segment74HC595 import time # Pin configuration - change the pins to match your wiring and board # ESP32 / Arduino Nano ESP32: SCLK=18, RCLK=17, DIO=16 # Raspberry Pi Pico / Nano RP2040: SCLK=2, RCLK=1, DIO=0 SCLK_PIN = 18 RCLK_PIN = 17 DIO_PIN = 16 display = Display4Digit7Segment74HC595(SCLK_PIN, RCLK_PIN, DIO_PIN, common_anode=True) 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) # Display string with dots display.print("1.2.3.4") # Shows "1.2.3.4" with dots on digits 0,1,2 time.sleep(2)

Unterstützte Zeichen

Die Anzeige kann eine Teilmenge von Buchstaben darstellen, die auf einer 7-Segment-Anzeige lesbar sind:

  • Ziffern: 0-9
  • Buchstaben: A, b, C, c, d, E, F, G, H, h, I, i, J, L, n, O, o, P, r, S, t, U, u, Y
  • Sonderzeichen: ° (Grad), - (Bindestrich), _ (Unterstrich), (Leerzeichen)

Temperaturanzeige

Methodenaufruf Anzeige zeigt Hinweise
display.print_temperature(25, 'C') "25°C" Celsius
display.print_temperature(72, 'F') "72°F" Fahrenheit
display.print_temperature(-5, 'C') "-5°C" Negative Temperatur
display.print_temperature(100, 'C') "100°" Kein Platz für die Einheit

Sie können Temperaturzeichenketten auch manuell mit der Konstante DEGREE erstellen:

display.print("25" + display.DEGREE + "C") # Same as print_temperature(25, 'C')

Behandlung von Punkten in Zeichenketten

Ein . Zeichen in einer Zeichenkette aktiviert den Dezimalpunkt der vorangehenden Ziffer, statt eine eigene Position zu belegen:

display.print("1.2.3.4") # Shows digits 1, 2, 3, 4 with dots on digits 0, 1, 2

ESP32 Code — Uhrzeit anzeigen

""" Example: Display time with blinking dot separator on 4-digit 7-segment display. Note: This module has dots only (no colon). The dot on digit 1 is used as a time separator. Works with: ESP32, Raspberry Pi Pico, Arduino Nano ESP32, Arduino Nano R1 WiFi Wiring guide: ESP32: 74HC595 Module ESP32 ────────────── ────── SCLK (SH_CP) -> GPIO18 RCLK (ST_CP) -> GPIO17 DIO (DS) -> GPIO16 VCC -> 3.3V GND -> GND Raspberry Pi Pico: 74HC595 Module Raspberry Pi Pico ────────────── ───────────────── SCLK (SH_CP) -> GP2 RCLK (ST_CP) -> GP1 DIO (DS) -> GP0 VCC -> 3.3V (pin 36) GND -> GND (pin 38) Arduino Nano ESP32: 74HC595 Module Arduino Nano ESP32 ────────────── ────────────────── SCLK (SH_CP) -> D18 (GPIO18) RCLK (ST_CP) -> D17 (GPIO17) DIO (DS) -> D16 (GPIO16) VCC -> 3.3V GND -> GND Arduino Nano RP2040 Connect: 74HC595 Module Arduino Nano RP2040 Connect ────────────── ─────────────────────────── SCLK (SH_CP) -> D2 (GP2) RCLK (ST_CP) -> D1 (GP1) DIO (DS) -> D0 (GP0) VCC -> 3.3V GND -> GND """ from DIYables_MicroPython_4Digit7Segment_74HC595 import Display4Digit7Segment74HC595 import time # Pin configuration - change the pins to match your wiring and board # ESP32 / Arduino Nano ESP32: SCLK=18, RCLK=17, DIO=16 # Raspberry Pi Pico / Nano RP2040: SCLK=2, RCLK=1, DIO=0 SCLK_PIN = 18 RCLK_PIN = 17 DIO_PIN = 16 display = Display4Digit7Segment74HC595(SCLK_PIN, RCLK_PIN, DIO_PIN, common_anode=True) hours = 12 minutes = 30 colon_on = True while True: display.print_time(hours, minutes, colon=colon_on) time.sleep(0.5) # Toggle dot separator every 500ms for blinking effect colon_on = not colon_on

Zeitanzeige

Dieses Modul hat nur Punkte (keinen Doppelpunkt). Die Methode print_time() verwendet den Punkt an Ziffer 1 (zweite von links) als Zeittrennzeichen.

Methodenaufruf Anzeige zeigt Hinweise
display.print_time(12, 30) "12.30" Punkt-Trennzeichen an
display.print_time(9, 5) "09.05" Automatische führende Nullen
display.print_time(12, 30, colon=False) "12 30" Punkt-Trennzeichen aus

Blinkeffekt: Schalten Sie den Parameter colon in Ihrer Hauptschleife alle 500ms um, um ein blinkendes Zeittrennzeichen zu erzeugen.

ESP32 Code — Anzeige blinken lassen

""" Example: Blink integer, float, 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 Wiring guide: ESP32: 74HC595 Module ESP32 ────────────── ────── SCLK (SH_CP) -> GPIO18 RCLK (ST_CP) -> GPIO17 DIO (DS) -> GPIO16 VCC -> 3.3V GND -> GND Raspberry Pi Pico: 74HC595 Module Raspberry Pi Pico ────────────── ───────────────── SCLK (SH_CP) -> GP2 RCLK (ST_CP) -> GP1 DIO (DS) -> GP0 VCC -> 3.3V (pin 36) GND -> GND (pin 38) Arduino Nano ESP32: 74HC595 Module Arduino Nano ESP32 ────────────── ────────────────── SCLK (SH_CP) -> D18 (GPIO18) RCLK (ST_CP) -> D17 (GPIO17) DIO (DS) -> D16 (GPIO16) VCC -> 3.3V GND -> GND Arduino Nano RP2040 Connect: 74HC595 Module Arduino Nano RP2040 Connect ────────────── ─────────────────────────── SCLK (SH_CP) -> D2 (GP2) RCLK (ST_CP) -> D1 (GP1) DIO (DS) -> D0 (GP0) VCC -> 3.3V GND -> GND """ from DIYables_MicroPython_4Digit7Segment_74HC595 import Display4Digit7Segment74HC595 import time # Pin configuration - change the pins to match your wiring and board # ESP32 / Arduino Nano ESP32: SCLK=18, RCLK=17, DIO=16 # Raspberry Pi Pico / Nano RP2040: SCLK=2, RCLK=1, DIO=0 SCLK_PIN = 18 RCLK_PIN = 17 DIO_PIN = 16 display = Display4Digit7Segment74HC595(SCLK_PIN, RCLK_PIN, DIO_PIN, common_anode=True) 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 a float display.print(12.34) 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)

Anzeige ein-/ausschalten

Die Methode off() stoppt den Timer für die automatische Aktualisierung und schaltet alle Segmente aus. Die Methode on() startet den Timer neu — die Anzeige zeigt wieder den zuletzt ausgegebenen Inhalt.

Methode Aktion Hinweise
display.off() Anzeige stoppen und alle Segmente ausschalten Timer wird gestoppt
display.on() Anzeige mit aktuellem Inhalt neu starten Timer läuft weiter
display.clear() Anzeigepuffer löschen Anzeige ist leer

Verwenden Sie off() und on() in einer Schleife, um einen Blinkeffekt zu erzeugen. Der Anzeigeinhalt (gesetzt durch print()) bleibt während off() erhalten.

API-Übersicht

Die vollständige API-Referenz mit detaillierten Parametern und Beispielen finden Sie in der Library Reference.

Methode Beschreibung
print(value, decimal_places, zero_pad) Zeigt int, float oder string an (erkennt den Typ automatisch)
print_temperature(temperature, unit) Zeigt die Temperatur mit dem Symbol ° an
print_time(hours, minutes, colon) Zeigt die Uhrzeit HH.MM mit Punkt-Trennzeichen an
clear() Löscht den Anzeigepuffer
off() Stoppt die automatische Aktualisierung und schaltet die Anzeige dunkel
on() Startet die automatische Aktualisierung neu
set_char(position, char) Setzt ein Zeichen an Position (0-3)
set_number(position, number) Setzt die Ziffer 0-9 an Position (0-3)
set_dot(position, state) Setzt den Dezimalpunkt an Position (0-3)
set_segments(position, segments) Setzt rohe Segmentbits an Position (0-3)

Nächste Schritte

  • Erkunden Sie die Library Reference für die vollständige API einschließlich der Low-Level-Segmentsteuerung.
  • Kombinieren Sie die Anzeige mit Sensoren (z. B. DHT11, DS18B20), um einen Temperaturmonitor zu bauen.
  • Verwenden Sie print_time() mit der RTC oder NTP des ESP32, um eine einfache Uhr zu bauen.
  • Fügen Sie Taster hinzu, um einen Countdown-Timer oder eine Stoppuhr zu erstellen.

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