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 [Ici] pour nous rejoindre dès aujourd’hui !

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.

../_images/2.1.3_tilt_switch_list.png

Schéma de circuit

../_images/2.1.3_tilt_switch_schematic_1.png ../_images/2.1.3_tilt_switch_schematic_2.png

Procédure expérimentale

Étape 1 : Montez le circuit.

../_images/2.1.3_tilt_switch_circuit.png

Étape 2 : Accédez au dossier du code.

cd ~/davinci-kit-for-raspberry-pi/python-pi5

Étape 3 : Exécutez le code.

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.

Avertissement

En cas d’erreur RuntimeError: Cannot determine SOC peripheral base address, veuillez consulter Si gpiozero ne fonctionne pas..

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.

#!/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

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

    #!/usr/bin/env python3
    from gpiozero import LED, Button  # Importation des classes LED et Button
    
  2. 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.

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

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

    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