.. 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 !
.. _1.1.1_py_pi5:
1.1.1 LED Clignotant
===========================
Introduction
-------------------
Dans ce projet, nous allons apprendre à faire clignoter une LED en programmant.
Grâce à vos réglages, votre LED peut produire une série de phénomènes intéressants.
Maintenant, allez-y.
Composants Nécessaires
--------------------------------
Dans ce projet, nous avons besoin des composants suivants.
.. image:: ../python_pi5/img/1.1.1_blinking_led_list.png
:width: 800
:align: center
Il est certainement pratique d'acheter un kit complet, voici le lien :
.. list-table::
:widths: 20 20 20
:header-rows: 1
* - Nom
- ARTICLES DANS CE KIT
- LIEN
* - Kit Raphael
- 337
- |link_Raphael_kit|
Vous pouvez également les acheter séparément via les liens ci-dessous.
.. list-table::
:widths: 30 20
:header-rows: 1
* - INTRODUCTION DES COMPOSANTS
- 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|
Schéma de Montage
--------------------
Dans cette expérience, nous connectons la broche GPIO 17 du Raspberry Pi à l'anode (broche longue) de la LED, puis la cathode (broche courte) de la LED à une résistance, et enfin l'autre extrémité de la résistance à la broche GND du Raspberry Pi. Pour allumer la LED, nous devons définir GPIO17 sur haut (3,3V). Nous pouvons obtenir ce phénomène en programmant.
.. note::
**Pin11** se réfère à la 11e broche du Raspberry Pi de gauche à droite,
et ses numéros de broche **BCM** correspondants sont indiqués dans le tableau suivant.
Parmi les contenus liés au langage Python, BCM 17 est 17 dans la colonne BCM du tableau suivant.
En même temps, ils sont les mêmes que la 11e broche sur le Raspberry Pi, Pin 11.
============ ======== ===
T-Board Name physical BCM
GPIO17 Pin 11 17
============ ======== ===
.. image:: ../python_pi5/img/1.1.1_blinking_led_schematic.png
:width: 800
:align: center
Procédures Expérimentales
-----------------------------
**Étape 1 :** Montez le circuit.
.. image:: ../python_pi5/img/1.1.1_blinking_led_circuit.png
:width: 800
:align: center
**Étape 2 :** Allez dans le dossier du code et exécutez-le.
1. Si vous utilisez un écran, nous vous recommandons de suivre les étapes suivantes.
Trouvez ``1.1.1_BlinkingLed_zero.py`` et double-cliquez dessus pour l'ouvrir. Vous êtes maintenant dans le fichier.
Cliquez sur **Run** ->\ **Run Module** dans la fenêtre et le contenu suivant apparaîtra.
Pour arrêter l'exécution, cliquez simplement sur le bouton X en haut à droite pour le
fermer et vous reviendrez au code. Si vous modifiez le code, avant de cliquer sur
**Run Module (F5)**, vous devez d'abord le sauvegarder. Ensuite, vous pourrez voir les résultats.
2. Si vous vous connectez à distance au Raspberry Pi, tapez la commande suivante :
.. raw:: html
.. code-block::
cd ~/raphael-kit/python-pi5
.. note::
Changez le répertoire vers le chemin du code de cette expérience via ``cd``.
**Étape 3 :** Exécutez le code
.. raw:: html
.. code-block::
sudo python3 1.1.1_BlinkingLed_zero.py
.. note::
Ici, sudo signifie superuser do, et python signifie exécuter le fichier avec Python.
Après l'exécution du code, vous verrez la LED clignoter.
**Étape 4 :** Si vous souhaitez modifier le fichier de code ``1.1.1_BlinkingLed_zero.py``,
appuyez sur ``Ctrl + C`` pour arrêter l'exécution du code. Tapez ensuite la commande suivante pour ouvrir ``1.1.1_BlinkingLed_zero.py`` :
.. raw:: html
.. code-block::
nano 1.1.1_BlinkingLed_zero.py
.. note::
nano est un outil d'édition de texte. La commande est utilisée pour ouvrir le
fichier de code ``1.1.1_BlinkingLed_zero.py`` avec cet outil.
Appuyez sur ``Ctrl+X`` pour quitter. Si vous avez modifié le code, il y aura une
invite demandant si vous souhaitez enregistrer les modifications ou non. Tapez ``Y`` (enregistrer)
ou ``N`` (ne pas enregistrer).
Appuyez ensuite sur ``Entrée`` pour quitter. Tapez à nouveau nano ``1.1.1_BlinkingLed_zero.py`` pour voir l'effet après la modification.
.. warning::
Si vous recevez le message d'erreur ``RuntimeError: Cannot determine SOC peripheral base address``, veuillez consulter :ref:`faq_soc`
**Code**
Le code du programme est le suivant :
.. note::
Vous pouvez **Modifier/Réinitialiser/Copier/Exécuter/Arrêter** le code ci-dessous. Mais avant cela, vous devez aller dans le chemin source du code 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
from time import sleep
# Initialize an LED connected to GPIO pin 17 using the GPIO Zero library.
led = LED(17)
try:
# Start an infinite loop to toggle the LED state.
while True:
# Turn on the LED and print a message to the console.
led.on()
print('...LED ON')
# Wait for 0.5 seconds with the LED on.
sleep(0.5)
# Turn off the LED and print a message to the console.
led.off()
print('LED OFF...')
# Wait for 0.5 seconds with the LED off.
sleep(0.5)
except KeyboardInterrupt:
# Gracefully handle a keyboard interrupt (Ctrl+C) by breaking the loop.
# GPIO Zero handles cleanup of GPIO settings automatically on exit.
pass
**Explication du code**
#. Lorsque le système détecte cela, il recherchera le chemin d'installation de Python dans le paramètre d'environnement, puis appellera l'interpréteur correspondant pour effectuer l'opération. Cela permet d'éviter que l'utilisateur n'installe Python dans le chemin par défaut ``/usr/bin``.
.. code-block:: python
#!/usr/bin/env python3
#. 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
from gpiozero import LED
from time import sleep
#. Cette ligne crée un objet LED connecté à la broche GPIO 17.
.. code-block:: python
# Initialize an LED connected to GPIO pin 17 using the GPIO Zero library.
led = LED(17)
#. Une boucle infinie est démarrée en utilisant ``while True:``. À l'intérieur de la boucle, la LED est allumée (``led.on()``) et un message est imprimé. Le programme fait ensuite une pause de 0,5 seconde (``sleep(0.5)``). Ensuite, la LED est éteinte (``led.off()``), un autre message est imprimé et le programme fait à nouveau une pause de 0,5 seconde.
.. code-block:: python
try:
# Start an infinite loop to toggle the LED state.
while True:
# Turn on the LED and print a message to the console.
led.on()
print('...LED ON')
# Wait for 0.5 seconds with the LED on.
sleep(0.5)
# Turn off the LED and print a message to the console.
led.off()
print('LED OFF...')
# Wait for 0.5 seconds with the LED off.
sleep(0.5)
#. Le bloc ``except`` intercepte un ``KeyboardInterrupt`` (comme appuyer sur Ctrl+C) et quitte la boucle en toute sécurité. L'instruction ``pass`` est utilisée ici comme un espace réservé pour indiquer qu'aucune action spécifique n'est effectuée en cas d'interruption.
.. code-block:: python
except KeyboardInterrupt:
# Gracefully handle a keyboard interrupt (Ctrl+C) by breaking the loop.
# GPIO Zero handles cleanup of GPIO settings automatically on exit.
pass