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 [Ici] et rejoignez-nous aujourd’hui !

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.

../_images/2.1.5_tilt_switch_list.png

Il est définitivement pratique d’acheter un kit complet, voici le lien :

Nom

ARTICLES DANS CE KIT

LIEN

Kit Raphael

337

Raphael Kit

Vous pouvez également les acheter séparément via les liens ci-dessous.

INTRODUCTION DES COMPOSANTS

LIEN D’ACHAT

Carte d’extension GPIO

ACHETER

Plaque d’expérimentation (Breadboard)

ACHETER

Fils de Liaison

ACHETER

Résistance

ACHETER

LED

ACHETER

Interrupteur à Inclinaison

-

Schéma de Câblage

../_images/2.1.5_tilt_switch_schematic_1.png ../_images/2.1.5_tilt_switch_schematic_2.png

Procédures Expérimentales

Étape 1 : Construire le circuit.

../_images/2.1.5_tilt_switch_circuit.png

Étape 2 : Changer de répertoire.

cd ~/raphael-kit/python-pi5

Étape 3 : Exécuter.

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.

Avertissement

Si vous recevez le message 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, 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.

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

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

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

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

    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