.. note:: Bonjour, bienvenue dans la communauté des passionnés de SunFounder Raspberry Pi, Arduino et ESP32 sur Facebook ! Plongez dans l'univers du Raspberry Pi, Arduino et ESP32 avec d'autres enthousiastes. **Pourquoi nous rejoindre ?** - **Support d'experts** : Résolvez les problèmes après-vente et relevez les défis techniques avec l'aide de notre communauté et de notre équipe. - **Apprendre & Partager** : Échangez des conseils et des tutoriels pour perfectionner vos compétences. - **Aperçus exclusifs** : Profitez d'un accès anticipé aux nouvelles annonces de produits et aux avant-premières. - **Réductions spéciales** : Bénéficiez de réductions exclusives sur nos produits les plus récents. - **Promotions festives et cadeaux** : Participez à des concours et à des promotions spéciales lors des fêtes. 👉 Prêt à explorer et à créer avec nous ? Cliquez sur [|link_sf_facebook|] pour nous rejoindre dès aujourd'hui ! .. _2.1.3_py_pi5: 2.1.3 Interrupteur à bascule ================================ Introduction --------------- Il s'agit d'un interrupteur à bascule à bille avec une petite bille en métal à l'intérieur. Il est utilisé pour détecter les inclinaisons de faible angle. Composants nécessaires --------------------------- Pour ce projet, nous aurons besoin des composants suivants. .. image:: ../python_pi5/img/2.1.3_tilt_switch_list.png .. raw:: html
Schéma de circuit -------------------- .. image:: ../python_pi5/img/2.1.3_tilt_switch_schematic_1.png .. image:: ../python_pi5/img/2.1.3_tilt_switch_schematic_2.png Procédure expérimentale -------------------------- **Étape 1 :** Montez le circuit. .. image:: ../python_pi5/img/2.1.3_tilt_switch_circuit.png **Étape 2 :** Accédez au dossier du code. .. raw:: html .. code-block:: cd ~/davinci-kit-for-raspberry-pi/python-pi5 **Étape 3 :** Exécutez le code. .. raw:: html .. code-block:: sudo python3 2.1.3_Tilt.py Placez l'interrupteur à la verticale, la LED verte s'allumera. Si vous l'inclinez, "Tilt!" s'affichera sur l'écran et la LED rouge s'allumera. Replacez-le à la verticale, et la LED verte se rallumera. .. warning:: En cas 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, assurez-vous de vous rendre dans le répertoire source, tel que ``davinci-kit-for-raspberry-pi/python-pi5``. Après modification, vous pouvez exécuter le code pour observer le résultat. .. raw:: html .. code-block:: python #!/usr/bin/env python3 from gpiozero import LED, Button # Importation des classes LED et Button # Initialisation du détecteur d'inclinaison et des LEDs avec GPIO Zero TiltPin = Button(17, pull_up=False) # Capteur d'inclinaison connecté à la broche GPIO 17, sans résistance pull-up green_led = LED(27) # LED verte connectée à la broche GPIO 27 red_led = LED(22) # LED rouge connectée à la broche GPIO 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: # Vérifier si le capteur est incliné print(' *************') print(' * Tilt! *') print(' *************') red_led.on() # Allumer la LED rouge green_led.off() # Éteindre la LED verte else: # Si le capteur n'est pas incliné red_led.off() # Éteindre la LED rouge green_led.on() # Allumer la LED verte try: while True: # Vérifier continuellement l'état du capteur d'inclinaison et mettre à jour les LEDs TiltPin.when_pressed = detect TiltPin.when_released = detect except KeyboardInterrupt: # Gérer une interruption clavier (Ctrl+C) pour sortir proprement de la boucle pass **Explication du code** #. Cette ligne définit le script pour être exécuté 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 # Importation des classes LED et Button #. Initialise le capteur d'inclinaison connecté à la broche GPIO 17 (avec résistance pull-up désactivée) et deux LEDs connectées aux broches GPIO 27 et 22. .. code-block:: python # Initialisation du détecteur d'inclinaison et des LEDs avec GPIO Zero TiltPin = Button(17, pull_up=False) # Capteur d'inclinaison connecté à la broche GPIO 17, sans résistance pull-up green_led = LED(27) # LED verte connectée à la broche GPIO 27 red_led = LED(22) # LED rouge connectée à la broche GPIO 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: # Vérifier si le capteur est incliné print(' *************') print(' * Tilt! *') print(' *************') red_led.on() # Allumer la LED rouge green_led.off() # Éteindre la LED verte else: # Si le capteur n'est pas incliné red_led.off() # Éteindre la LED rouge green_led.on() # Allumer la LED verte #. La boucle principale affecte la fonction ``detect`` aux événements ``when_pressed`` et ``when_released`` du capteur. Le bloc ``try-except`` gère une interruption clavier pour une terminaison propre du script. .. code-block:: python try: while True: # Vérifier continuellement l'état du capteur d'inclinaison et mettre à jour les LEDs TiltPin.when_pressed = detect TiltPin.when_released = detect except KeyboardInterrupt: # Gérer une interruption clavier (Ctrl+C) pour sortir proprement de la boucle pass