.. 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 [|link_sf_facebook|] et rejoignez-nous dès aujourd'hui ! .. _1.1.3_py_pi5: 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. .. image:: ../python_pi5/img/1.1.3_led_bar_list.png .. raw:: html
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 ============ ======== ======== === .. image:: ../python_pi5/img/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. .. image:: ../python_pi5/img/1.1.3_LedBarGraph_circuit.png **Étape 2** : Accédez au dossier du code. .. raw:: html .. code-block:: cd ~/davinci-kit-for-raspberry-pi/python-pi5 **Étape 3** : Exécutez le fichier exécutable. .. raw:: html .. code-block:: 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. .. warning:: Si un message d'erreur apparaît tel que ``RuntimeError: Cannot determine SOC peripheral base address``, veuillez consulter :ref:`faq_soc`. **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. .. raw:: html .. code-block:: python #!/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. ``LED`` de ``gpiozero`` pour le contrôle des LED et ``sleep`` de ``time`` pour les délais. .. code-block:: python #!/usr/bin/env python3 from gpiozero import LED from time import sleep #. 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``. .. code-block:: python # 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. .. code-block:: python 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. .. code-block:: python 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. .. code-block:: python 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 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. .. code-block:: python 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