Note

Bonjour, bienvenue dans la communauté SunFounder Raspberry Pi, Arduino et ESP32 sur Facebook ! Plongez plus profondément dans le monde du Raspberry Pi, Arduino et ESP32 avec d’autres passionnés.

Pourquoi nous rejoindre ?

  • Support d’experts : Résolvez les problèmes après-vente et relevez les défis techniques grâce à notre communauté et notre équipe.

  • Apprendre & Partager : Échangez des astuces et des tutoriels pour développer vos compétences.

  • Aperçus exclusifs : Accédez en avant-première aux nouvelles annonces de produits.

  • Réductions spéciales : Bénéficiez de réductions exclusives sur nos produits les plus récents.

  • Promotions festives et cadeaux : Participez à des promotions spéciales et à des tirages au sort.

👉 Prêt à explorer et créer avec nous ? Cliquez sur [Ici] et rejoignez-nous dès aujourd’hui !

1.1.3 Graphique à LED

Introduction

Dans ce projet, nous allons allumer séquentiellement les lumières sur le graphique à LED.

Composants nécessaires

Pour ce projet, nous aurons besoin des composants suivants.

../_images/1.1.3_led_bar_list.png

Schéma de câblage

T-Board Name

physical

wiringPi

BCM

GPIO18

Pin 12

1

18

GPIO23

Pin 16

4

23

GPIO24

Pin 18

5

24

GPIO25

Pin 22

6

25

SPICE0

Pin 24

10

8

SPICE1

Pin 26

11

7

GPIO12

Pin 32

26

12

GPIO16

Pin 36

27

16

GPIO20

Pin 38

28

22

GPIO21

Pin 40

29

21

../_images/1.1.3_LedBarGraph_schematic.png

Procédure expérimentale

Étape 1 : Construisez le circuit.

Note

Faites attention au sens de connexion. Si vous branchez à l’envers, la LED ne s’allumera pas.

../_images/1.1.3_LedBarGraph_circuit.png

Étape 2 : Accédez au dossier du code.

cd ~/davinci-kit-for-raspberry-pi/python-pi5

Étape 3 : Exécutez le fichier exécutable.

sudo python3 1.1.3_LedBarGraph.py

Après l’exécution du code, vous verrez les LED du graphique à LED s’allumer et s’éteindre de manière séquentielle.

Avertissement

Si un message d’erreur apparaît tel que RuntimeError: Cannot determine SOC peripheral base address, veuillez consulter Si gpiozero ne fonctionne pas..

Code

Note

Vous pouvez Modifier/Réinitialiser/Copier/Exécuter/Arrêter le code ci-dessous. Mais avant cela, vous devez accéder au chemin source du code comme davinci-kit-for-raspberry-pi/python-pi5. Après modification, vous pouvez l’exécuter directement pour observer le résultat.

#!/usr/bin/env python3
from gpiozero import LED
from time import sleep

# Définir les broches GPIO où les LED sont connectées
led_pins = [18, 23, 24, 25, 8, 7, 12, 16, 20, 21]

# Créer des objets LED pour chaque broche
leds = [LED(pin) for pin in led_pins]

def odd_led_bar_graph():
    # Allumer séquentiellement les LED impaires (index 0, 2, 4, etc.)
    for i in range(5):
        j = i * 2  # Calculer l'index impair
        leds[j].on()  # Allumer la LED impaire
        sleep(0.3)    # Attendre pour effet visuel
        leds[j].off() # Éteindre la LED

def even_led_bar_graph():
    # Allumer séquentiellement les LED paires (index 1, 3, 5, etc.)
    for i in range(5):
        j = i * 2 + 1  # Calculer l'index pair
        leds[j].on()   # Allumer la LED paire
        sleep(0.3)     # Attendre pour effet visuel
        leds[j].off()  # Éteindre la LED

def all_led_bar_graph():
    # Allumer séquentiellement toutes les LED une par une
    for led in leds:
        led.on()       # Allumer la LED
        sleep(0.3)     # Attendre pour effet visuel
        led.off()      # Éteindre la LED

def turn_off_all_leds():
    # Éteindre toutes les LED à la fois
    for led in leds:
        led.off()

try:
    # Boucle principale pour parcourir les motifs de LED
    while True:
        odd_led_bar_graph()   # Activer les LED impaires
        sleep(0.3)            # Pause entre les motifs
        even_led_bar_graph()  # Activer les LED paires
        sleep(0.3)            # Pause entre les motifs
        all_led_bar_graph()   # Activer toutes les LED
        sleep(0.3)            # Pause avant de recommencer

except KeyboardInterrupt:
    # Gérer l'interruption (Ctrl+C) proprement
    turn_off_all_leds()      # Assurez-vous que toutes les LED sont éteintes à la sortie
    pass

Explication du code

  1. Ces lignes importent les classes et fonctions nécessaires. LED de gpiozero pour le contrôle des LED et sleep de time pour les délais.

    #!/usr/bin/env python3
    from gpiozero import LED
    from time import sleep
    
  2. La liste led_pins contient les numéros de broche GPIO. leds est une liste d’objets LED, chacun correspondant à une broche de led_pins.

    # Définir les broches GPIO où les LED sont connectées
    led_pins = [18, 23, 24, 25, 8, 7, 12, 16, 20, 21]
    
    # Créer des objets LED pour chaque broche
    leds = [LED(pin) for pin in led_pins]
    
  3. Faire en sorte que les LED impaires s’allument tour à tour.

    def odd_led_bar_graph():
        # Allumer séquentiellement les LED impaires (index 0, 2, 4, etc.)
        for i in range(5):
            j = i * 2  # Calculer l'index impair
            leds[j].on()  # Allumer la LED impaire
            sleep(0.3)    # Attendre pour effet visuel
            leds[j].off() # Éteindre la LED
    
  4. Faire en sorte que les LED paires s’allument tour à tour.

    def even_led_bar_graph():
        # Allumer séquentiellement les LED paires (index 1, 3, 5, etc.)
        for i in range(5):
            j = i * 2 + 1  # Calculer l'index pair
            leds[j].on()   # Allumer la LED paire
            sleep(0.3)     # Attendre pour effet visuel
            leds[j].off()  # Éteindre la LED
    
  5. Faire en sorte que toutes les LED s’allument tour à tour.

    def all_led_bar_graph():
        # Allumer séquentiellement toutes les LED une par une
        for led in leds:
            led.on()       # Allumer la LED
            sleep(0.3)     # Attendre pour effet visuel
            led.off()      # Éteindre la LED
    
  6. La boucle while True parcourt continuellement les motifs de LED. Le bloc except gère une interruption clavier (Ctrl+C) et s’assure que toutes les LED sont éteintes à la sortie.

    try:
        # Boucle principale pour parcourir les motifs de LED
        while True:
            odd_led_bar_graph()   # Activer les LED impaires
            sleep(0.3)            # Pause entre les motifs
            even_led_bar_graph()  # Activer les LED paires
            sleep(0.3)            # Pause entre les motifs
            all_led_bar_graph()   # Activer toutes les LED
            sleep(0.3)            # Pause avant de recommencer
    
    except KeyboardInterrupt:
        # Gérer l'interruption (Ctrl+C) proprement
        turn_off_all_leds()      # Assurez-vous que toutes les LED sont éteintes à la sortie
        pass