ESP32 MicroPython - Afficheur 7 Segments 4 Chiffres 74HC595

L'ESP32 est un microcontrôleur puissant, compatible WiFi, largement utilisé dans les projets IoT et embarqués. Associé à MicroPython et au module d'affichage DIYables 4 chiffres 7 segments (74HC595), vous pouvez facilement afficher des nombres, du texte et des lectures de capteurs sur un afficheur LED lumineux.

Ce tutoriel vous guide à travers :

Afficheur 7 Segments 4 Chiffres 74HC595 ESP32 MicroPython

Le Module d'Affichage 7 Segments 4 Chiffres 74HC595

Le module DIYables 4 chiffres 7 segments 74HC595 est un afficheur LED compact piloté par deux registres à décalage 74HC595. Il affiche 4 chiffres et 4 points décimaux. Comme les registres à décalage gèrent tout le pilotage des segments et des chiffres, l'ESP32 n'a besoin que de 3 broches GPIO (horloge, verrou et données) au lieu des 12+ broches qu'un afficheur brut nécessiterait.

L'ESP32 communique avec le module en décalant séquentiellement les données de segments et de sélection de chiffres. La bibliothèque gère cela automatiquement à l'aide d'un Timer matériel pour le multiplexage — chaque chiffre est rafraîchi à tour de rôle à haute vitesse, de sorte que les 4 chiffres semblent allumés simultanément.

Caractéristiques principales du module :

  • Seulement 3 fils pour les données (SCLK, RCLK, DIO) plus l'alimentation.
  • 4 points décimaux — contrôlables individuellement.
  • Variantes anode commune ou cathode commune disponibles.
  • Compatible 5V ou 3,3V.

Description des Broches

Broche Fonction Connexion ESP32
SCLK (SH_CP) Entrée horloge série Connecter à GPIO18
RCLK (ST_CP) Horloge de registre / verrou Connecter à GPIO17
DIO (DS) Entrée données série Connecter à GPIO16
VCC Alimentation 3,3V à 5V Connecter à 3,3V
GND Masse Connecter à GND
Brochage de l'Afficheur 7 Segments 4 Chiffres 74HC595

Câblage

L'ESP32 fonctionne en logique 3,3V. Le module 74HC595 fonctionne avec 3,3V et 5V, vous pouvez donc câbler directement — aucun adaptateur de niveau n'est nécessaire.

Module 74HC595 ESP32 Notes
SCLK (SH_CP) GPIO18 Horloge série
RCLK (ST_CP) GPIO17 Verrou / horloge de registre
DIO (DS) GPIO16 Données série
VCC 3.3V Alimentation
GND GND Masse
Schéma de câblage ESP32 Afficheur 7 Segments 4 Chiffres 74HC595

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Conseil : Vous pouvez utiliser n'importe quelle broche GPIO disponible sur l'ESP32. Mettez simplement à jour les numéros de broches dans le code.

Étapes Rapides

Voici les instructions pour configurer et exécuter votre code MicroPython sur l'ESP32 avec Thonny IDE :

  • Assurez-vous que Thonny IDE est installé sur votre ordinateur.
  • Confirmez que le firmware MicroPython est chargé sur votre carte ESP32.
  • Si c'est la première fois que vous utilisez un ESP32 avec MicroPython, consultez le guide ESP32 - Premiers pas. pour des instructions étape par étape.
  • Connectez la carte ESP32 au module d'affichage 7 segments 4 chiffres selon le schéma fourni.
  • Connectez la carte ESP32 à votre ordinateur avec un câble USB.
  • Ouvrez Thonny IDE sur votre ordinateur.
  • Dans Thonny IDE, allez dans Outils Options.
  • Dans l'onglet Interpréteur, choisissez MicroPython (ESP32) dans le menu déroulant.
  • Assurez-vous que le bon port est sélectionné. Thonny IDE le détecte généralement automatiquement, mais vous devrez peut-être le sélectionner manuellement (comme COM3 sur Windows ou /dev/ttyUSB0 sur Linux).
  • Naviguez vers Outils Gérer les packages dans Thonny IDE.
  • Recherchez "DIYables-MicroPython-4Digit7Segment-74HC595", puis trouvez la bibliothèque d'affichage 7 segments 4 chiffres créée par DIYables.
  • Cliquez sur DIYables-MicroPython-4Digit7Segment-74HC595, puis cliquez sur le bouton Installer pour installer la bibliothèque.
Bibliothèque ESP32 Afficheur 7 Segments 4 Chiffres 74HC595
  • Copiez le code MicroPython fourni et collez-le dans l'éditeur de Thonny.
  • Sauvegardez le code sur votre ESP32 en :
    • Cliquant sur le bouton Enregistrer ou en appuyant sur Ctrl+S.
    • Dans la boîte de dialogue d'enregistrement, choisissez Appareil MicroPython.
    • Nommez le fichier main.py.
  • Cliquez sur le bouton vert Exécuter (ou appuyez sur F5) pour exécuter le script.
  • Observez l'afficheur — vous devriez voir des nombres, du texte ou d'autres contenus apparaître sur l'afficheur 7 segments.

Modèle de Code de Démarrage

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)

Code ESP32 — Afficher des Entiers

""" 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)

Essayez

  • Câblez le module, connectez l'ESP32 via USB.
  • Téléversez le code avec Thonny IDE.
  • L'afficheur fait défiler plusieurs entiers (0, 42, 1234, -5, -123, 9999) et un nombre avec zéros de tête (0042).

Affichage d'Entiers

La méthode print() détecte automatiquement les entiers et les formate alignés à droite sur l'afficheur.

Appel de méthode Afficheur montre Notes
display.print(0) " 0" Un seul chiffre, aligné à droite
display.print(42) " 42" Deux chiffres
display.print(1234) "1234" Quatre chiffres complets
display.print(-5) " -5" Négatif avec signe moins
display.print(-123) "-123" Négatif, largeur complète
display.print(9999) "9999" Valeur positive maximale
display.print(42, zero_pad=True) "0042" Zéros de tête

Plage entière : -999 à 9999. Les valeurs hors de cette plage affichent "Err".

Code ESP32 — Afficher des Flottants

""" 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)

Affichage de Flottants

Le point décimal est automatiquement placé à la bonne position. Vous pouvez laisser la bibliothèque choisir le nombre de décimales, ou le spécifier manuellement.

Appel de méthode Afficheur montre Notes
display.print(1.5) " 1.5" Décimales auto
display.print(12.34) "12.34" Auto — 2 décimales
display.print(3.141) "3.141" Auto — 3 décimales
display.print(23.5, decimal_places=1) "23.5" Forcé à 1 décimale
display.print(1.5, decimal_places=2) " 1.50" Forcé à 2 décimales avec zéro final
display.print(1.5, decimal_places=2, zero_pad=True) "01.50" Avec zéros de tête et 2 décimales

Code ESP32 — Afficher du Texte, des Degrés et des Températures

""" 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)

Caractères Pris en Charge

L'afficheur peut afficher un sous-ensemble de caractères alphabétiques lisibles sur un afficheur 7 segments :

  • Chiffres : 0-9
  • Lettres : A, b, C, c, d, E, F, G, H, h, I, i, J, L, n, O, o, P, r, S, t, U, u, Y
  • Spéciaux : ° (degré), - (tiret), _ (souligné), (espace)

Affichage de Températures

Appel de méthode Afficheur montre Notes
display.print_temperature(25, 'C') "25°C" Celsius
display.print_temperature(72, 'F') "72°F" Fahrenheit
display.print_temperature(-5, 'C') "-5°C" Température négative
display.print_temperature(100, 'C') "100°" Pas de place pour l'unité

Vous pouvez aussi construire des chaînes de température manuellement avec la constante DEGREE :

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

Gestion des Points dans les Chaînes

Un caractère . dans une chaîne active le point décimal sur le chiffre précédent plutôt que d'occuper sa propre position :

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

Code ESP32 — Afficher l'Heure

""" 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

Affichage de l'Heure

Ce module possède uniquement des points (pas de deux-points). La méthode print_time() utilise le point sur le chiffre 1 (deuxième à partir de la gauche) comme séparateur horaire.

Appel de méthode Afficheur montre Notes
display.print_time(12, 30) "12.30" Séparateur point activé
display.print_time(9, 5) "09.05" Zéros automatiques
display.print_time(12, 30, colon=False) "12 30" Séparateur point désactivé

Effet de clignotement : Alternez le paramètre colon toutes les 500ms dans votre boucle principale pour créer un séparateur horaire clignotant.

Code ESP32 — Faire Clignoter l'Afficheur

""" 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)

Contrôle Marche/Arrêt de l'Afficheur

La méthode off() arrête le timer de rafraîchissement automatique et éteint tous les segments. La méthode on() redémarre le timer — l'afficheur reprend en montrant ce qui a été affiché en dernier.

Méthode Action Notes
display.off() Arrêter l'afficheur et effacer tous les segments Le timer est arrêté
display.on() Redémarrer l'afficheur avec le contenu actuel Le timer reprend
display.clear() Effacer le tampon d'affichage L'afficheur montre du blanc

Utilisez off() et on() dans une boucle pour créer un effet de clignotement. Le contenu de l'afficheur (défini par print()) est préservé pendant off().

Résumé de l'API

Pour la référence complète de l'API avec des paramètres et exemples détaillés, consultez la Référence de la Bibliothèque.

Méthode Description
print(value, decimal_places, zero_pad) Afficher un entier, un flottant ou une chaîne (détection automatique du type)
print_temperature(temperature, unit) Afficher une température avec le symbole °
print_time(hours, minutes, colon) Afficher l'heure HH.MM avec séparateur point
clear() Effacer le tampon d'affichage
off() Arrêter le rafraîchissement automatique et éteindre l'afficheur
on() Redémarrer le rafraîchissement automatique
set_char(position, char) Définir le caractère à la position (0-3)
set_number(position, number) Définir le chiffre 0-9 à la position (0-3)
set_dot(position, state) Définir le point décimal à la position (0-3)
set_segments(position, segments) Définir les bits de segments bruts à la position (0-3)

Prochaines Étapes

  • Explorez la Référence de la Bibliothèque pour l'API complète incluant le contrôle bas niveau des segments.
  • Combinez l'afficheur avec des capteurs (par ex. DHT11, DS18B20) pour construire un moniteur de température.
  • Utilisez print_time() avec le RTC de l'ESP32 ou NTP pour construire une horloge simple.
  • Ajoutez des boutons pour créer un minuteur à rebours ou un chronomètre.

※ NOS MESSAGES

  • N'hésitez pas à partager le lien de ce tutoriel. Cependant, veuillez ne pas utiliser notre contenu sur d'autres sites web. Nous avons investi beaucoup d'efforts et de temps pour créer ce contenu, veuillez respecter notre travail !