.. 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 [|link_sf_facebook|] et rejoignez-nous aujourd'hui ! .. _2.1.1_py_pi5: 2.1.1 Bouton ================= Introduction -------------------- Dans ce projet, nous allons apprendre à allumer ou éteindre une LED en utilisant un bouton. Composants nécessaires -------------------------------- Dans ce projet, nous avons besoin des composants suivants. .. image:: ../python_pi5/img/2.1.1_Button_list.png Il est certainement pratique d'acheter un kit complet, voici le lien : .. list-table:: :widths: 20 20 20 :header-rows: 1 * - Nom - ÉLÉMENTS DANS CE KIT - LIEN * - Kit Raphael - 337 - |link_Raphael_kit| Vous pouvez également les acheter séparément avec les liens ci-dessous. .. list-table:: :widths: 30 20 :header-rows: 1 * - INTRODUCTION DU COMPOSANT - LIEN D'ACHAT * - :ref:`cpn_gpio_extension_board` - |link_gpio_board_buy| * - :ref:`cpn_breadboard` - |link_breadboard_buy| * - :ref:`cpn_wires` - |link_wires_buy| * - :ref:`cpn_resistor` - |link_resistor_buy| * - :ref:`cpn_led` - |link_led_buy| * - :ref:`cpn_button` - |link_button_buy| Schéma de montage --------------------- Utilisez un bouton normalement ouvert comme entrée du Raspberry Pi, la connexion est montrée dans le schéma ci-dessous. Lorsque le bouton est pressé, le GPIO18 passera à un niveau haut (3,3V). Nous pouvons détecter l'état du GPIO18 par programmation. C'est-à-dire, si le GPIO18 passe à un niveau haut, cela signifie que le bouton est pressé. Vous pouvez exécuter le code correspondant lorsque le bouton est pressé, et alors la LED s'allumera. .. note:: La broche la plus longue de la LED est l'anode et la plus courte est la cathode. .. image:: ../python_pi5/img/2.1.1_Button_schematic_1.png .. image:: ../python_pi5/img/2.1.1_Button_schematic_2.png Procédures expérimentales ------------------------------- **Étape 1** : Construisez le circuit. .. image:: ../python_pi5/img/2.1.1_Button_circuit.png **Étape 2** : Ouvrez le fichier de code. .. raw:: html .. code-block:: cd ~/raphael-kit/python-pi5 **Étape 3** : Exécutez le code. .. raw:: html .. code-block:: sudo python3 2.1.1_Button_zero.py Maintenant, appuyez sur le bouton et la LED s'allumera ; relâchez le bouton et la LED s'éteindra. .. warning:: Si vous recevez le message d'erreur ``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 aller 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. .. raw:: html .. code-block:: python #!/usr/bin/env python3 from gpiozero import LED, Button # Import LED and Button classes from gpiozero from signal import pause # Import pause function from signal module # Initialize an LED object on GPIO pin 17 led = LED(17) # Initialize a Button object on GPIO pin 18 button = Button(18) # Link the button's "when_pressed" event to the LED's on() method button.when_pressed = led.on # Link the button's "when_released" event to the LED's off() method button.when_released = led.off # Run an event loop that waits for button events and keeps the script running pause() **Explication du code** #. Le script est écrit en Python3 et il importe les classes ``LED`` et ``Button`` de la bibliothèque ``gpiozero``, ainsi que la fonction ``pause`` du module ``signal``. .. code-block:: python #!/usr/bin/env python3 from gpiozero import LED, Button # Import LED and Button classes from gpiozero from signal import pause # Import pause function from signal module #. Initialise un objet ``LED`` sur la broche GPIO 17 et un objet ``Button`` sur la broche GPIO 18. .. code-block:: python # Initialize an LED object on GPIO pin 17 led = LED(17) # Initialize a Button object on GPIO pin 18 button = Button(18) #. Configure des gestionnaires d'événements pour que la LED s'allume lorsque le bouton est enfoncé et s'éteigne lorsque le bouton est relâché. .. code-block:: python # Link the button's "when_pressed" event to the LED's on() method button.when_pressed = led.on # Link the button's "when_released" event to the LED's off() method button.when_released = led.off #. Cela permet de maintenir le script en cours d'exécution dans une boucle d'événements, en attente des événements de pression et de relâchement du bouton. .. code-block:: python # Run an event loop that waits for button events and keeps the script running pause()