.. 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.2_py_pi5:
2.1.2 Micro Switch
========================
Introduction
---------------------
Dans ce projet, nous allons apprendre à utiliser un micro-interrupteur. Un micro-interrupteur est un petit interrupteur très sensible qui nécessite une compression minimale pour s'activer. Parce qu'ils sont fiables et sensibles, les micro-interrupteurs sont souvent utilisés comme dispositif de sécurité.
Ils sont utilisés pour empêcher les portes de se fermer si quelque chose ou quelqu'un se trouve sur le passage et pour d'autres applications similaires.
Required Components
-------------------------------
Pour ce projet, nous avons besoin des composants suivants.
.. image:: ../python_pi5/img/2.1.2_micro_switch_list.png
Il est définitivement 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 en suivant 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_micro_switch`
- \-
* - :ref:`cpn_capacitor`
- |link_capacitor_buy|
Schematic Diagram
-----------------------
Connectez la broche gauche du micro-interrupteur au GPIO17, et deux LED aux
broches GPIO22 et GPIO27 respectivement. Ensuite, lorsque vous appuyez et
relâchez le bras mobile du micro-interrupteur, vous pouvez voir les deux LED s'allumer
alternativement.
.. image:: ../python_pi5/img/2.1.2_micro_switch_schematic_1.png
.. image:: ../python_pi5/img/2.1.2_micro_switch_schematic_2.png
Experimental Procedures
-----------------------
**Step 1 :** Construisez le circuit.
.. image:: ../python_pi5/img/2.1.2_micro_switch_circuit.png
**Step 2 :** Allez dans le dossier du code.
.. raw:: html
.. code-block::
cd ~/raphael-kit/python-pi5
**Step 3 :** Exécutez le code.
.. raw:: html
.. code-block::
sudo python3 2.1.2_MicroSwitch_zero.py
Pendant l'exécution du code, appuyez sur le bras mobile, puis la LED jaune s'allume ; relâchez le bras mobile, la LED 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::
You can **Modify/Reset/Copy/Run/Stop** the code below. But before that, you need to go to source code path like ``raphael-kit/python-pi5``. After modifying the code, you can run it directly to see the effect.
.. raw:: html
.. code-block:: python
#!/usr/bin/env python3
from gpiozero import LED, Button # Import LED and Button classes from gpiozero
from time import sleep # Import sleep function for delays
# Initialize micro switch on GPIO pin 17 with the pull-up resistor disabled
micro_switch = Button(17, pull_up=False)
# Initialize LED1 connected to GPIO pin 22
led1 = LED(22)
# Initialize LED2 connected to GPIO pin 27
led2 = LED(27)
try:
# Continuously check the state of the micro switch and control LEDs accordingly
while True:
if micro_switch.is_pressed: # If the micro switch is pressed
print('LED1 ON') # Print a message to the console
led1.on() # Turn on LED1
led2.off() # Turn off LED2
else: # If the micro switch is not pressed
print(' LED2 ON') # Print a message to the console
led1.off() # Turn off LED1
led2.on() # Turn on LED2
sleep(0.5) # Pause for 0.5 seconds before checking the switch again
except KeyboardInterrupt:
# Handle KeyboardInterrupt (Ctrl+C) to exit the loop gracefully
pass
**Explication du Code**
#. Cette ligne configure le script pour qu'il s'exécute avec Python 3. Elle importe ``LED`` et ``Button`` de ``gpiozero`` pour contrôler les périphériques 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 from gpiozero
from time import sleep # Import sleep function for delays
#. Initialise un micro-interrupteur connecté à la broche GPIO 17 avec la résistance pull-up désactivée, et deux LEDs connectées aux broches GPIO 22 et 27.
.. code-block:: python
# Initialize micro switch on GPIO pin 17 with the pull-up resistor disabled
micro_switch = Button(17, pull_up=False)
# Initialize LED1 connected to GPIO pin 22
led1 = LED(22)
# Initialize LED2 connected to GPIO pin 27
led2 = LED(27)
#. Dans la boucle principale, il 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 une interruption clavier (comme Ctrl+C) pour permettre la terminaison propre du script.
.. code-block:: python
try:
# Continuously check the state of the micro switch and control LEDs accordingly
while True:
if micro_switch.is_pressed: # If the micro switch is pressed
print('LED1 ON') # Print a message to the console
led1.on() # Turn on LED1
led2.off() # Turn off LED2
else: # If the micro switch is not pressed
print(' LED2 ON') # Print a message to the console
led1.off() # Turn off LED1
led2.on() # Turn on LED2
sleep(0.5) # Pause for 0.5 seconds before checking the switch again
except KeyboardInterrupt:
# Handle KeyboardInterrupt (Ctrl+C) to exit the loop gracefully
pass