Note

Bonjour, bienvenue dans la communauté SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts sur Facebook ! Plongez plus profondément dans l’univers du Raspberry Pi, d’Arduino et de l’ESP32 avec d’autres passionnés.

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.

  • Apprenez & Partagez : Échangez des astuces et des tutoriels pour améliorer vos compétences.

  • Aperçus exclusifs : Accédez en avant-première aux nouvelles annonces de produits et aux avant-goûts exclusifs.

  • Réductions spéciales : Bénéficiez de réductions exclusives sur nos derniers produits.

  • Promotions et concours festifs : Participez à des concours et à des promotions spéciales pour les fêtes.

👉 Prêt à explorer et créer avec nous ? Cliquez sur [Ici] pour nous rejoindre dès aujourd’hui !

2.1.2 Interrupteur à glissière

Introduction

Dans ce projet, nous allons apprendre à utiliser un interrupteur à glissière. Habituellement, l’interrupteur à glissière est soudé sur un circuit imprimé (PCB) en tant qu’interrupteur d’alimentation, mais ici nous allons l’insérer dans une plaque de prototypage (breadboard), même si cela peut le rendre moins stable. Nous l’utiliserons sur la breadboard pour illustrer son fonctionnement.

Composants nécessaires

Pour ce projet, nous aurons besoin des composants suivants.

../_images/2.1.2_slide_switch_list.png

Schéma de circuit

Connectez la broche centrale de l’interrupteur à glissière au GPIO17, et deux LEDs respectivement aux broches GPIO22 et GPIO27. Ainsi, lorsque vous basculez l’interrupteur, vous verrez les deux LEDs s’allumer en alternance.

../_images/2.1.2_slide_switch_schematic_1.png ../_images/2.1.2_slide_switch_schematic_2.png

Procédure expérimentale

Étape 1 : Montez le circuit.

../_images/2.1.2_slide_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.2_Slider.py

Lorsque le code s’exécute, placez l’interrupteur à gauche : la LED jaune s’allumera ; placez-le à droite : la LED rouge s’allumera.

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  # Importer les classes LED et Button pour le contrôle GPIO
from time import sleep  # Importer la fonction sleep pour ajouter des délais

# Initialiser l'interrupteur micro sur la broche GPIO 17 sans résistance pull-up
micro_switch = Button(17, pull_up=False)
# Initialiser la LED1 sur la broche GPIO 22
led1 = LED(22)
# Initialiser la LED2 sur la broche GPIO 27
led2 = LED(27)

try:
    # Boucle principale pour contrôler l'état des LEDs en fonction de l'état de l'interrupteur
    while True:
        if micro_switch.is_pressed:  # Vérifier si l'interrupteur est pressé
            print('    LED1 ON    ')  # Afficher le message de statut
            led1.on()   # Allumer la LED1
            led2.off()  # Éteindre la LED2
        else:  # Si l'interrupteur n'est pas pressé
            print('    LED2 ON    ')  # Afficher le message de statut
            led1.off()  # Éteindre la LED1
            led2.on()   # Allumer la LED2

        sleep(0.5)  # Attendre 0,5 seconde avant de vérifier à nouveau l'état de l'interrupteur

except KeyboardInterrupt:
    # Gérer une interruption clavier (Ctrl+C) pour une sortie propre de la boucle
    pass

Explication du code

  1. Cette ligne définit le script pour être exécuté avec Python 3. Elle importe les classes LED et Button de gpiozero pour le contrôle des appareils GPIO, ainsi que sleep du module time pour ajouter des délais.

    #!/usr/bin/env python3
    from gpiozero import LED, Button  # Importer les classes LED et Button pour le contrôle GPIO
    from time import sleep  # Importer la fonction sleep pour ajouter des délais
    
  2. Initialise un micro-interrupteur connecté à la broche GPIO 17 sans résistance pull-up, et deux LEDs connectées aux broches GPIO 22 et 27.

    # Initialiser l'interrupteur micro sur la broche GPIO 17 sans résistance pull-up
    micro_switch = Button(17, pull_up=False)
    # Initialiser la LED1 sur la broche GPIO 22
    led1 = LED(22)
    # Initialiser la LED2 sur la broche GPIO 27
    led2 = LED(27)
    
  3. La boucle principale vérifie l’état du micro-interrupteur. Si pressé, la LED1 s’allume et la LED2 s’éteint ; si relâché, la LED1 s’éteint et la LED2 s’allume. La boucle se répète toutes les 0,5 seconde. Capture un KeyboardInterrupt (comme Ctrl+C) pour une terminaison propre du script.

    try:
    # Boucle principale pour contrôler l'état des LEDs en fonction de l'état de l'interrupteur
    while True:
        if micro_switch.is_pressed:  # Vérifier si l'interrupteur est pressé
            print('    LED1 ON    ')  # Afficher le message de statut
            led1.on()   # Allumer la LED1
            led2.off()  # Éteindre la LED2
        else:  # Si l'interrupteur n'est pas pressé
            print('    LED2 ON    ')  # Afficher le message de statut
            led1.off()  # Éteindre la LED1
            led2.on()   # Allumer la LED2
    
        sleep(0.5)  # Attendre 0,5 seconde avant de vérifier à nouveau l'état de l'interrupteur
    
    except KeyboardInterrupt:
        # Gérer une interruption clavier (Ctrl+C) pour une sortie propre de la boucle
        pass