ESP32 MicroPython - Afficheur 7 Segments 4 Chiffres TM1637

L'ESP32 est un microcontrôleur puissant, compatible WiFi, largement utilisé dans les projets IoT et embarqués. Associé à MicroPython et au module d'afficheur 7 segments 4 chiffres DIYables TM1637, vous pouvez facilement afficher des nombres, du texte, des températures et l'heure sur un afficheur LED lumineux.

Ce tutoriel vous guide à travers :

Afficheur 7 Segments 4 Chiffres TM1637 ESP32 MicroPython

Le Module d'Afficheur 7 Segments 4 Chiffres TM1637

Le TM1637 est un CI pilote LED dédié qui gère à la fois le multiplexage et le pilotage des segments pour jusqu'à 6 chiffres. Ce module l'utilise pour piloter un afficheur LED 7 segments 4 chiffres avec un séparateur deux-points entre le deuxième et le troisième chiffre, le rendant idéal pour les applications d'horloge et de minuterie.

Contrairement aux afficheurs basés sur des registres à décalage (comme le 74HC595), le TM1637 dispose d'une mémoire d'affichage intégrée. Une fois que vous écrivez des données dans la puce, elle maintient l'afficheur allumé automatiquement — aucune interruption de Timer ni boucle de rafraîchissement n'est nécessaire. Le TM1637 prend également en charge 8 niveaux de luminosité (0–7) et n'utilise que 2 broches GPIO (CLK et DIO) pour la communication.

Le module communique via un protocole série 2 fils similaire à l'I2C (mais pas l'I2C standard). La bibliothèque gère tous les détails du protocole — vous appelez simplement des méthodes simples comme print() et print_time().

Description des Broches

Broche Fonction Connexion ESP32
CLK Entrée horloge série Connecter à GPIO21
DIO Entrée/sortie données série Connecter à GPIO22
VCC Alimentation 3,3V à 5V Connecter à 3,3V
GND Masse Connecter à GND
Brochage de l'Afficheur 7 Segments 4 Chiffres TM1637

Câblage

L'ESP32 fonctionne en logique 3,3V. Le module TM1637 fonctionne avec 3,3V et 5V, il est donc directement compatible avec l'ESP32 sans adaptateur de niveau.

Module TM1637 ESP32 Notes
CLK GPIO21 Ligne d'horloge
DIO GPIO22 Ligne E/S données
VCC 3.3V Alimentation
GND GND Masse
Schéma de câblage ESP32 Afficheur 7 Segments 4 Chiffres TM1637

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 TM1637 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-TM1637", puis trouvez la bibliothèque d'afficheur 7 segments 4 chiffres TM1637 créée par DIYables.
  • Cliquez sur DIYables-MicroPython-4Digit7Segment-TM1637, puis cliquez sur le bouton Installer pour installer la bibliothèque.
Bibliothèque ESP32 Afficheur 7 Segments 4 Chiffres TM1637
  • 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 le résultat — l'afficheur 7 segments 4 chiffres montre des nombres, du texte ou l'heure selon l'exemple.

Modèle de Code de Démarrage

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)

Code ESP32 — Afficher des Entiers

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

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), puis affiche 42 avec zéros de tête "0042".

Référence Affichage d'Entiers

Appel de méthode Afficheur montre Notes
display.print(0) 0 Chiffre unique aligné à droite
display.print(42) 42 Aligné à droite
display.print(1234) 1234 4 chiffres utilisés
display.print(-5) -5 Signe négatif + chiffre
display.print(-123) -123 Négatif max 3 chiffres
display.print(9999) 9999 Valeur maximale affichable
display.print(10000) Err Erreur de dépassement
display.print(42, zero_pad=True) 0042 Avec zéros de tête sur 4 chiffres

Code ESP32 — Afficher Texte, Degrés et 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 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)

Référence Texte et Température

Appel de méthode Afficheur montre Notes
display.print("HELP") HELP Affichage texte
display.print("Hi") Hi Aligné à gauche, 2 caractères
display.print("COOL") COOL 4 caractères
display.print_temperature(25, 'C') 25°C Celsius avec symbole degré
display.print_temperature(72, 'F') 72°F Fahrenheit
display.print_temperature(-5, 'C') -5°C Température négative
display.print_temperature(100) 100° 3 chiffres, pas de place pour l'unité

Le symbole degré peut également être utilisé directement dans les chaînes via la constante display.DEGREE.

Code ESP32 — Afficher l'Heure avec Deux-Points Clignotants

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

Référence Affichage de l'Heure

Appel de méthode Afficheur montre Notes
display.print_time(12, 30) 1230 Deux-points ACTIVÉ
display.print_time(9, 5) 0905 Heures et minutes avec zéros de tête
display.print_time(12, 30, colon=False) 12 30 Deux-points DÉSACTIVÉ (pour effet clignotant)

Alternez le paramètre colon toutes les 500ms pour créer un effet de deux-points clignotant, courant sur les afficheurs d'horloge.

Code ESP32 — Définir des Chiffres Individuels et les Deux-Points

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

Référence Chiffres Individuels

Appel de méthode Description
display.set_number(position, number) Définir un seul chiffre (0-9) à la position 0-3
display.set_char(position, char) Définir un caractère à la position 0-3
display.set_colon(True) Activer les deux-points entre le chiffre 1 et le chiffre 2
display.set_colon(False) Désactiver les deux-points

Vous pouvez mélanger set_number(), set_char() et set_colon() pour construire des affichages personnalisés chiffre par chiffre.

Code ESP32 — Faire Clignoter l'Afficheur

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

Référence Clignotement

Utilisez display.off() pour éteindre l'afficheur et display.on() pour le rallumer. Les données d'affichage sont préservées — on() restaure le contenu précédent sans avoir besoin d'appeler print() à nouveau.

Référence de la Bibliothèque

Voir la Référence de la Bibliothèque DIYables_MicroPython_4Digit7Segment_TM1637 pour la documentation complète de l'API incluant tous les constructeurs, méthodes et constantes.

Prochaines Étapes

  • Combinez avec un module RTC DS3231 pour construire une horloge en temps réel.
  • Ajoutez un capteur DHT11/DHT22 pour afficher des lectures de température en direct.
  • Utilisez des boutons pour basculer entre le mode horloge et le mode température.

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