.. 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.5_py_pi5: 2.1.5 Interrupteur à Bascule ================================= Introduction --------------- Il s'agit d'un interrupteur à bascule à bille avec une bille métallique à l'intérieur. Il est utilisé pour détecter les inclinaisons de petits angles. Composants Nécessaires ------------------------- Dans ce projet, nous avons besoin des composants suivants. .. image:: ../python_pi5/img/2.1.5_tilt_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 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_tilt_switch` - \- Schéma de Câblage -------------------- .. image:: ../python_pi5/img/2.1.5_tilt_switch_schematic_1.png .. image:: ../python_pi5/img/2.1.5_tilt_switch_schematic_2.png Procédures Expérimentales ---------------------------- **Étape 1 :** Construire le circuit. .. image:: ../python_pi5/img/2.1.5_tilt_switch_circuit.png **Étape 2 :** Changer de répertoire. .. raw:: html .. code-block:: cd ~/raphael-kit/python-pi5 **Étape 3 :** Exécuter. .. raw:: html .. code-block:: sudo python3 2.1.5_Tilt_zero.py Placez l'interrupteur à la verticale, et la LED verte s'allumera. Si vous l'inclinez, "Tilt!" sera affiché à l'écran et la LED rouge s'allumera. Replacez-le à la verticale, et la LED verte se rallumera. .. 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 dans le répertoire 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 # Initialize the Button for the tilt sensor and LEDs using GPIO Zero TiltPin = Button(17, pull_up=False) # Tilt sensor connected to GPIO pin 17, pull-up resistor disabled green_led = LED(27) # Green LED connected to GPIO pin 27 red_led = LED(22) # Red LED connected to GPIO pin 22 def detect(): """ Detect the tilt sensor state and control the LEDs. Turns on the red LED and turns off the green LED when tilted. Turns off the red LED and turns on the green LED when not tilted. """ if TiltPin.is_pressed: # Check if the sensor is tilted print(' *************') print(' * Tilt! *') print(' *************') red_led.on() # Turn on red LED green_led.off() # Turn off green LED else: # If the sensor is not tilted red_led.off() # Turn off red LED green_led.on() # Turn on green LED try: while True: # Continuously check the tilt sensor state and update LEDs TiltPin.when_pressed = detect TiltPin.when_released = detect except KeyboardInterrupt: # Handle KeyboardInterrupt (Ctrl+C) to exit the loop gracefully pass **Explication du Code** #. Cette ligne configure le script pour s'exécuter avec Python 3 et importe les classes ``LED`` et ``Button`` de ``gpiozero`` pour contrôler les périphériques GPIO. .. code-block:: python #!/usr/bin/env python3 from gpiozero import LED, Button #. Initialise le capteur d'inclinaison connecté à la broche GPIO 17 (avec résistance pull-up désactivée) et deux LED connectées aux broches GPIO 27 et 22. .. code-block:: python # Initialize the Button for the tilt sensor and LEDs using GPIO Zero TiltPin = Button(17, pull_up=False) # Tilt sensor connected to GPIO pin 17, pull-up resistor disabled green_led = LED(27) # Green LED connected to GPIO pin 27 red_led = LED(22) # Red LED connected to GPIO pin 22 #. Définit la fonction ``detect``, qui vérifie l'état du capteur d'inclinaison. Si incliné, elle allume la LED rouge et éteint la LED verte. Si non incliné, elle fait l'inverse. .. code-block:: python def detect(): """ Detect the tilt sensor state and control the LEDs. Turns on the red LED and turns off the green LED when tilted. Turns off the red LED and turns on the green LED when not tilted. """ if TiltPin.is_pressed: # Check if the sensor is tilted print(' *************') print(' * Tilt! *') print(' *************') red_led.on() # Turn on red LED green_led.off() # Turn off green LED else: # If the sensor is not tilted red_led.off() # Turn off red LED green_led.on() # Turn on green LED #. La boucle principale assigne la fonction ``detect`` aux événements ``when_pressed`` et ``when_released`` du capteur d'inclinaison. Le bloc ``try-except`` gère l'interruption du clavier pour une terminaison propre. .. code-block:: python try: while True: # Continuously check the tilt sensor state and update LEDs TiltPin.when_pressed = detect TiltPin.when_released = detect except KeyboardInterrupt: # Handle KeyboardInterrupt (Ctrl+C) to exit the loop gracefully pass