.. 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