Note

Bonjour et bienvenue dans la Communauté Facebook des passionnés de Raspberry Pi, Arduino et ESP32 de SunFounder ! Plongez plus profondément dans l’univers des Raspberry Pi, Arduino et ESP32 avec d’autres passionnés.

Pourquoi rejoindre ?

  • Support d’experts : Résolvez les problèmes après-vente et les défis techniques avec l’aide de notre communauté et de notre équipe.

  • Apprendre et partager : Échangez des astuces et des tutoriels pour améliorer vos compétences.

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

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

  • Promotions festives et cadeaux : Participez à des cadeaux et des promotions de vacances.

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

1.1.3 Graphique à barres LED

Introduction

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

Composants nécessaires

Dans ce projet, nous avons besoin des composants suivants.

../_images/1.1.3_led_bar_list.png

Il est très pratique d’acheter un kit complet, voici le lien :

Nom

ARTICLES DANS CE KIT

LIEN

Kit Raphael

337

Raphael Kit

Vous pouvez également les acheter séparément aux liens ci-dessous.

INTRODUCTION DES COMPOSANTS

LIEN D’ACHAT

Carte d’extension GPIO

ACHETER

Plaque d’expérimentation (Breadboard)

ACHETER

Fils de Liaison

ACHETER

Résistance

ACHETER

Graphique à barres LED

-

Schéma de connexion

Nom T-Board

physique

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édures expérimentales

Étape 1 : Construisez le circuit.

Note

Faites attention à la direction lors de la connexion. Si vous le connectez à l’envers, il ne s’allumera pas.

../_images/1.1.3_LedBarGraph_circuit.png

Étape 2 : Allez dans le dossier du code.

cd ~/raphael-kit/python-pi5

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

sudo python3 1.1.3_LedBarGraph_zero.py

Après l’exécution du code, vous verrez les LED de la barre LED s’allumer et s’éteindre régulièrement.

Avertissement

Si vous recevez le message d’erreur 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 du code source comme raphael-kit/python-pi5. Après avoir modifié le code, vous pouvez l’exécuter directement pour voir l’effet.

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

# Define GPIO pins where LEDs are connected
led_pins = [18, 23, 24, 25, 8, 7, 12, 16, 20, 21]

# Create LED objects for each pin
leds = [LED(pin) for pin in led_pins]

def odd_led_bar_graph():
    # Sequentially light up odd-numbered LEDs (index 0, 2, 4, etc.)
    for i in range(5):
        j = i * 2  # Calculate odd index
        leds[j].on()  # Turn on odd-numbered LED
        sleep(0.3)    # Delay for visual effect
        leds[j].off() # Turn off LED

def even_led_bar_graph():
    # Sequentially light up even-numbered LEDs (index 1, 3, 5, etc.)
    for i in range(5):
        j = i * 2 + 1  # Calculate even index
        leds[j].on()   # Turn on even-numbered LED
        sleep(0.3)     # Delay for visual effect
        leds[j].off()  # Turn off LED

def all_led_bar_graph():
    # Sequentially light up all LEDs one by one
    for led in leds:
        led.on()       # Turn on LED
        sleep(0.3)     # Delay for visual effect
        led.off()      # Turn off LED

def turn_off_all_leds():
    # Turn off all LEDs at once
    for led in leds:
        led.off()

try:
    # Main loop to cycle through LED patterns
    while True:
        odd_led_bar_graph()   # Activate odd-numbered LEDs
        sleep(0.3)            # Pause between patterns
        even_led_bar_graph()  # Activate even-numbered LEDs
        sleep(0.3)            # Pause between patterns
        all_led_bar_graph()   # Activate all LEDs
        sleep(0.3)            # Pause before restarting

except KeyboardInterrupt:
    # Handle interruption (Ctrl+C) gracefully
    turn_off_all_leds()      # Ensure all LEDs are turned off on exit
    pass

Explication du code

  1. Ces lignes importent les classes et fonctions nécessaires. LED de gpiozero pour le contrôle des LEDs 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 des broches GPIO. leds est une liste d’objets LED, chacun correspondant à une broche dans led_pins.

    # Define GPIO pins where LEDs are connected
    led_pins = [18, 23, 24, 25, 8, 7, 12, 16, 20, 21]
    
    # Create LED objects for each pin
    leds = [LED(pin) for pin in led_pins]
    
  3. Faire s’allumer les LEDs sur les chiffres impairs du graphique à barres LED.

    def odd_led_bar_graph():
        # Sequentially light up odd-numbered LEDs (index 0, 2, 4, etc.)
        for i in range(5):
            j = i * 2  # Calculate odd index
            leds[j].on()  # Turn on odd-numbered LED
            sleep(0.3)    # Delay for visual effect
            leds[j].off() # Turn off LED
    
  4. Faire s’allumer les LEDs sur les chiffres pairs du graphique à barres LED.

    def even_led_bar_graph():
        # Sequentially light up even-numbered LEDs (index 1, 3, 5, etc.)
        for i in range(5):
            j = i * 2 + 1  # Calculate even index
            leds[j].on()   # Turn on even-numbered LED
            sleep(0.3)     # Delay for visual effect
            leds[j].off()  # Turn off LED
    
  5. Faire s’allumer les LEDs sur le graphique à barres LED une par une.

    def all_led_bar_graph():
        # Sequentially light up all LEDs one by one
        for led in leds:
            led.on()       # Turn on LED
            sleep(0.3)     # Delay for visual effect
            led.off()      # Turn off LED
    
  6. La boucle while True alterne en continu les motifs LED. Le bloc except gère une interruption clavier (Ctrl+C), assurant que toutes les LEDs sont éteintes à la sortie.

    try:
        # Main loop to cycle through LED patterns
        while True:
            odd_led_bar_graph()   # Activate odd-numbered LEDs
            sleep(0.3)            # Pause between patterns
            even_led_bar_graph()  # Activate even-numbered LEDs
            sleep(0.3)            # Pause between patterns
            all_led_bar_graph()   # Activate all LEDs
            sleep(0.3)            # Pause before restarting
    
    except KeyboardInterrupt:
        # Handle interruption (Ctrl+C) gracefully
        turn_off_all_leds()      # Ensure all LEDs are turned off on exit
        pass