.. note::
Bonjour et bienvenue dans la communauté Facebook des passionnés de SunFounder Raspberry Pi, Arduino et ESP32 ! Plongez-vous 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 vos problèmes après-vente et relevez les défis techniques avec l'aide de notre communauté et de notre équipe.
- **Apprendre et partager** : Échangez des astuces et tutoriels pour perfectionner vos compétences.
- **Aperçus exclusifs** : Bénéficiez d'un accès anticipé aux nouvelles annonces de produits.
- **Remises spéciales** : Profitez de réductions exclusives sur nos nouveaux produits.
- **Promotions et cadeaux festifs** : Participez à des tirages au sort et des promotions spéciales durant les fêtes.
👉 Prêt à explorer et créer avec nous ? Cliquez sur [|link_sf_facebook|] et rejoignez-nous dès aujourd'hui !
.. _1.1.1_py_pi5:
1.1.1 LED Clignotante
=========================
Introduction
-----------------
Dans ce projet, nous apprendrons à faire clignoter une LED par programmation.
Grâce à vos paramètres, votre LED peut produire une série de phénomènes intéressants.
C'est parti !
Composants nécessaires
--------------------------
Pour ce projet, nous aurons besoin des composants suivants :
.. image:: ../python_pi5/img/1.1.1_blinking_led_list.png
:width: 800
:align: center
.. raw:: html
Schéma de câblage
----------------------
Dans cet exercice, nous connectons la broche GPIO 17 du Raspberry Pi à l'anode (patte longue) de la LED, puis la cathode (patte 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, il faut régler GPIO17 sur l'état haut (3,3 V). Nous pouvons réaliser ce phénomène par la programmation.
.. note::
**Pin11** fait référence à la 11e broche du Raspberry Pi de gauche à droite, et ses numéros de broche correspondants en **BCM** sont indiqués dans le tableau ci-dessous.
Dans le contexte de la programmation en Python, la broche GPIO 17 est désignée comme
17 dans la colonne BCM du tableau ci-dessous. Cela correspond également à la 11e broche
physique sur le Raspberry Pi, appelée 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édure expérimentale
--------------------------
**Étape 1 :** Construire le circuit.
.. image:: ../python_pi5/img/1.1.1_blinking_led_circuit.png
:width: 800
:align: center
**Étape 2 :** Accédez au dossier du code et exécutez-le.
1. Si vous utilisez un écran, nous vous recommandons de suivre les étapes suivantes.
Recherchez le fichier `1.1.1_BlinkingLed.py` et double-cliquez pour l'ouvrir.
Vous êtes maintenant dans le fichier.
Cliquez sur **Run** ->\ **Run Module** dans la fenêtre, et les résultats suivants apparaîtront.
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 l'enregistrer. Ensuite, vous verrez le
résultat de vos modifications.
2. Si vous vous connectez à distance au Raspberry Pi, tapez la commande suivante :
.. raw:: html
.. code-block::
cd ~/davinci-kit-for-raspberry-pi/python-pi5
.. note::
Changez de répertoire pour accéder au chemin du code de cet exercice via ``cd``.
**Étape 3 :** Exécutez le code.
.. raw:: html
.. code-block::
sudo python3 1.1.1_BlinkingLed.py
.. note::
Ici, sudo signifie "superuser do" (super utilisateur), et python indique d'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.py`,
appuyez sur ``Ctrl + C`` pour arrêter l'exécution du code. Puis tapez la commande suivante
pour ouvrir `1.1.1_BlinkingLed.py` :
.. raw:: html
.. code-block::
nano 1.1.1_BlinkingLed.py
.. note::
nano est un éditeur de texte. La commande est utilisée pour ouvrir le fichier
de code `1.1.1_BlinkingLed.py` avec cet outil.
Appuyez sur ``Ctrl+X`` pour quitter. Si vous avez modifié le code, une invite vous
demandera si vous souhaitez enregistrer les modifications. Tapez ``Y`` (enregistrer)
ou ``N`` (ne pas enregistrer).
Ensuite, appuyez sur ``Entrée`` pour quitter. Tapez de nouveau
`nano 1.1.1_BlinkingLed.py` pour voir l'effet après les modifications.
.. warning::
Si vous recevez une erreur du type ``RuntimeError: Cannot determine SOC peripheral base address``, veuillez consulter :ref:`faq_soc`.
**Code**
Voici le code du programme :
.. 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 du 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
# Initialisation d'une LED connectée à la broche GPIO 17 en utilisant la bibliothèque GPIO Zero.
led = LED(17)
try:
# Démarrage d'une boucle infinie pour alterner l'état de la LED.
while True:
# Allume la LED et affiche un message dans la console.
led.on()
print('...LED ON')
# Attends 0,5 seconde avec la LED allumée.
sleep(0.5)
# Éteint la LED et affiche un message dans la console.
led.off()
print('LED OFF...')
# Attends 0,5 seconde avec la LED éteinte.
sleep(0.5)
except KeyboardInterrupt:
# Gère proprement une interruption du clavier (Ctrl+C) en sortant de la boucle.
# GPIO Zero gère automatiquement le nettoyage des paramètres GPIO à la sortie.
pass
**Explication du code**
#. Quand le système détecte cela, il recherche le chemin d'installation de python dans
la variable env, puis appelle l'interpréteur correspondant pour effectuer l'opération.
Cela permet d'éviter que l'utilisateur n'installe pas 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 de la LED, et ``sleep`` de ``time`` pour les pauses.
.. 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
# Initialisation d'une LED connectée à la broche GPIO 17.
led = LED(17)
#. Une boucle infinie est démarrée avec ``while True:``. À l'intérieur de la boucle,
la LED s'allume (``led.on()``) et un message est affiché. Le programme attend alors 0,5
seconde (``sleep(0.5)``). Ensuite, la LED s'éteint (``led.off()``), un autre message est
affiché et le programme attend encore 0,5 seconde.
.. code-block:: python
try:
# Démarrage d'une boucle infinie pour alterner l'état de la LED.
while True:
# Allume la LED et affiche un message dans la console.
led.on()
print('...LED ON')
# Attends 0,5 seconde avec la LED allumée.
sleep(0.5)
# Éteint la LED et affiche un message dans la console.
led.off()
print('LED OFF...')
# Attends 0,5 seconde avec la LED éteinte.
sleep(0.5)
#. Le bloc ``except`` intercepte une ``KeyboardInterrupt`` (par exemple en appuyant sur Ctrl+C) et quitte proprement la boucle. L'instruction ``pass`` est utilisée ici comme un espace réservé indiquant qu'aucune action spécifique n'est effectuée en cas d'interruption.
.. code-block:: python
except KeyboardInterrupt:
# Gère proprement une interruption du clavier (Ctrl+C) en sortant de la boucle.
# GPIO Zero gère automatiquement le nettoyage des paramètres GPIO à la sortie.
pass