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.
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 |
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.
É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
Ces lignes importent les classes et fonctions nécessaires.
LEDdegpiozeropour le contrôle des LED etsleepdetimepour les délais.#!/usr/bin/env python3 from gpiozero import LED from time import sleep
La liste
led_pinscontient les numéros de broche GPIO.ledsest une liste d’objetsLED, chacun correspondant à une broche deled_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]
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
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
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
La boucle
while Trueparcourt continuellement les motifs de LED. Le blocexceptgè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