.. 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.4_py_pi5:
2.1.4 Interrupteur à Glissière
=======================================
Introduction
------------
Dans ce projet, nous allons apprendre à utiliser un interrupteur à glissière. Habituellement,
l'interrupteur à glissière est soudé sur un circuit imprimé en tant qu'interrupteur d'alimentation,
mais ici nous devons l'insérer dans la plaque d'essai, ce qui peut ne pas être très serré.
Nous l'utilisons sur la plaque d'essai pour montrer son fonctionnement.
Composants Nécessaires
----------------------
Pour ce projet, nous avons besoin des composants suivants.
.. image:: ../python_pi5/img/2.1.4_slide_switch_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 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|
* - :ref:`cpn_slide_switch`
- |link_slide_switch_buy|
* - :ref:`cpn_capacitor`
- |link_capacitor_buy|
Schéma de Câblage
---------------------
Connectez la broche centrale de l'interrupteur à glissière à GPIO17,
et deux LED aux broches GPIO22 et GPIO27 respectivement. Ensuite,
lorsque vous actionnez l'interrupteur à glissière, vous pouvez voir
les deux LED s'allumer alternativement.
.. image:: ../python_pi5/img/2.1.4_slide_switch_schematic_1.png
.. image:: ../python_pi5/img/2.1.4_slide_switch_schematic_2.png
Procédures Expérimentales
-----------------------------
**Étape 1 :** Construisez le circuit.
.. image:: ../python_pi5/img/2.1.4_slide_switch_circuit.png
**Étape 2 :** Accédez au dossier du code.
.. raw:: html
.. code-block::
cd ~/raphael-kit/python-pi5
**Étape 3 :** Exécutez le code.
.. raw:: html
.. code-block::
sudo python3 2.1.4_Slider_zero.py
Pendant que le code s'exécute, placez l'interrupteur à gauche,
alors la LED jaune s'allume ; à droite, la lumière rouge s'allume.
.. 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 for GPIO control
from time import sleep # Import sleep function for adding delays
# Initialize the micro switch on GPIO pin 17 with the pull-up resistor disabled
micro_switch = Button(17, pull_up=False)
# Initialize LED1 on GPIO pin 22
led1 = LED(22)
# Initialize LED2 on GPIO pin 27
led2 = LED(27)
try:
# Main loop to control LED states based on the micro switch's state
while True:
if micro_switch.is_pressed: # Check if the micro switch is pressed
print(' LED1 ON ') # Print status message
led1.on() # Turn on LED1
led2.off() # Turn off LED2
else: # If the micro switch is not pressed
print(' LED2 ON ') # Print status message
led1.off() # Turn off LED1
led2.on() # Turn on LED2
sleep(0.5) # Wait for 0.5 seconds before rechecking the switch state
except KeyboardInterrupt:
# Handle a keyboard interrupt (Ctrl+C) for a clean exit from the loop
pass
**Explication du Code**
#. Cette ligne permet d'exécuter le script avec Python 3. Elle importe ``LED`` et ``Button`` de ``gpiozero`` pour contrôler les dispositifs GPIO, et ``sleep`` de ``time`` pour les délais.
.. code-block:: python
#!/usr/bin/env python3
from gpiozero import LED, Button # Import LED and Button classes for GPIO control
from time import sleep # Import sleep function for adding delays
#. Initialise un micro-interrupteur connecté à la broche GPIO 17 avec la résistance pull-up désactivée, et deux LED connectées aux broches GPIO 22 et 27.
.. code-block:: python
# Initialize the micro switch on GPIO pin 17 with the pull-up resistor disabled
micro_switch = Button(17, pull_up=False)
# Initialize LED1 on GPIO pin 22
led1 = LED(22)
# Initialize LED2 on GPIO pin 27
led2 = LED(27)
#. La boucle principale vérifie l'état du micro-interrupteur. Si pressé, LED1 s'allume et LED2 s'éteint ; si non pressé, LED1 s'éteint et LED2 s'allume. La boucle se répète toutes les 0,5 secondes. Capture un KeyboardInterrupt (comme Ctrl+C) pour permettre une terminaison propre du script.
.. code-block:: python
try:
# Main loop to control LED states based on the micro switch's state
while True:
if micro_switch.is_pressed: # Check if the micro switch is pressed
print(' LED1 ON ') # Print status message
led1.on() # Turn on LED1
led2.off() # Turn off LED2
else: # If the micro switch is not pressed
print(' LED2 ON ') # Print status message
led1.off() # Turn off LED1
led2.on() # Turn on LED2
sleep(0.5) # Wait for 0.5 seconds before rechecking the switch state
except KeyboardInterrupt:
# Handle a keyboard interrupt (Ctrl+C) for a clean exit from the loop
pass