.. note::
Bonjour et bienvenue dans la communauté SunFounder Raspberry Pi, Arduino & ESP32 Enthusiasts sur Facebook ! Plongez plus profondément dans l'univers du Raspberry Pi, de l'Arduino et de l'ESP32 avec d'autres passionnés.
**Pourquoi nous rejoindre ?**
- **Assistance 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 présentations exclusives.
- **Réductions spéciales** : Profitez de réductions exclusives sur nos derniers produits.
- **Promotions festives et concours** : Participez à des concours et à des promotions spéciales pour les fêtes.
👉 Prêt à explorer et créer avec nous ? Cliquez sur [|link_sf_facebook|] et rejoignez-nous dès aujourd'hui !
.. _2.1.1_py_pi5:
2.1.1 Bouton
==============
Introduction
---------------
Dans ce projet, nous allons apprendre à allumer ou éteindre une LED à l'aide d'un bouton.
Composants nécessaires
--------------------------
Pour ce projet, nous aurons besoin des composants suivants.
.. image:: ../python_pi5/img/2.1.1_Button_list.png
.. raw:: html
Schéma de circuit
---------------------
Utilisez un bouton normalement ouvert comme entrée pour le Raspberry Pi, selon le schéma de connexion ci-dessous. Lorsque le bouton est pressé, le GPIO18 passe à un niveau haut (3,3V). Nous pouvons détecter l'état du GPIO18 grâce à un programme. Ainsi, si le GPIO18 passe à un niveau haut, cela signifie que le bouton est pressé. Vous pouvez alors exécuter le code correspondant pour allumer la LED.
.. 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édure expérimentale
-----------------------
**É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 ~/davinci-kit-for-raspberry-pi/python-pi5
**Étape 3 :** Exécutez le code.
.. raw:: html
.. code-block::
sudo python3 2.1.1_Button.py
Maintenant, appuyez sur le bouton et la LED s'allumera ; relâchez le bouton et la LED s'éteindra.
.. warning::
En cas 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, assurez-vous de vous rendre dans le répertoire source comme ``davinci-kit-for-raspberry-pi/python-pi5``. Après modification, vous pouvez exécuter le code pour observer le résultat.
.. raw:: html
.. code-block:: python
#!/usr/bin/env python3
from gpiozero import LED, Button # Importer les classes LED et Button depuis gpiozero
from signal import pause # Importer la fonction pause du module signal
# Initialiser un objet LED sur la broche GPIO 17
led = LED(17)
# Initialiser un objet Button sur la broche GPIO 18
button = Button(18)
# Associer l'événement "when_pressed" du bouton à la méthode on() de la LED
button.when_pressed = led.on
# Associer l'événement "when_released" du bouton à la méthode off() de la LED
button.when_released = led.off
# Lancer une boucle d'événements pour maintenir le script en attente des interactions avec le bouton
pause()
**Explication du code**
#. Le script est écrit en Python3 et 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 # Importer les classes LED et Button depuis gpiozero
from signal import pause # Importer la fonction pause du module signal
#. Initialise un objet ``LED`` sur la broche GPIO 17 et un objet ``Button`` sur la broche GPIO 18.
.. code-block:: python
# Initialiser un objet LED sur la broche GPIO 17
led = LED(17)
# Initialiser un objet Button sur la broche GPIO 18
button = Button(18)
#. Configure les gestionnaires d'événements pour que la LED s'allume lorsque le bouton est pressé et s'éteigne lorsque le bouton est relâché.
.. code-block:: python
# Associer l'événement "when_pressed" du bouton à la méthode on() de la LED
button.when_pressed = led.on
# Associer l'événement "when_released" du bouton à la méthode off() de la LED
button.when_released = led.off
#. Cette fonction maintient le script en attente dans une boucle d'événements, prêt à réagir aux interactions du bouton.
.. code-block:: python
# Lancer une boucle d'événements pour maintenir le script en attente des interactions avec le bouton
pause()