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

Introduction

Dans ce projet, nous allons apprendre à allumer ou éteindre la LED en utilisant un bouton.

Composants Nécessaires

Pour ce projet, nous avons besoin des composants suivants.

../_images/list_2.1.1_Button.png

Il est certainement 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 à partir des liens ci-dessous.

INTRODUCTION AUX COMPOSANTS

LIEN D’ACHAT

Carte d’extension GPIO

ACHETER

Plaque d’expérimentation (Breadboard)

ACHETER

Fils de Liaison

ACHETER

Résistance

ACHETER

LED

ACHETER

Bouton

ACHETER

Schéma de Principe

Utilisez un bouton normalement ouvert comme entrée du Raspberry Pi, la connexion est montrée dans le schéma ci-dessous. Lorsque le bouton est enfoncé, le GPIO18 passe au niveau bas (0V). Nous pouvons détecter l’état du GPIO18 par programmation. C’est-à-dire que si le GPIO18 passe au niveau bas, cela signifie que le bouton est enfoncé. Vous pouvez exécuter le code correspondant lorsque le bouton est enfoncé, et alors la LED s’allumera.

Note

La broche la plus longue de la LED est l’anode et la plus courte est la cathode.

../_images/image302.png ../_images/image303.png

Procédures Expérimentales

Étape 1 : Construisez le circuit.

../_images/image152.png

Étape 2 : Ouvrez le fichier de code.

cd ~/raphael-kit/python

Étape 3 : Exécutez le code.

sudo python3 2.1.1_Button.py

Maintenant, appuyez sur le bouton, et la LED s’allumera ; appuyez à nouveau sur le bouton et la LED s’éteindra. En même temps, l’état de la LED sera affiché à l’écran.

Code

Note

Vous pouvez Modifier/Réinitialiser/Copier/Exécuter/Arrêter le code ci-dessous. Mais avant cela, vous devez vous rendre dans le chemin du code source comme raphael-kit/python. Après avoir modifié le code, vous pouvez l’exécuter directement pour voir l’effet.

import RPi.GPIO as GPIO
import time
LedPin = 17  # Set GPIO17 as LED pin
BtnPin = 18  # Set GPIO18 as button pin

# Set Led status to True(OFF)
Led_status = True

# Define a setup function for some setup
def setup():
    # Set the GPIO modes to BCM Numbering
    GPIO.setmode(GPIO.BCM)
    # Set LedPin's mode to output,
    # and initial level to high (3.3v)
    GPIO.setup(LedPin, GPIO.OUT, initial=GPIO.HIGH)
    # Set BtnPin's mode to input,
    # and pull up to high (3.3V)
    GPIO.setup(BtnPin, GPIO.IN)


# Define a callback function for button callback
def swLed(ev=None):
    global Led_status
    # Switch led status(on-->off; off-->on)
    Led_status = not Led_status
    GPIO.output(LedPin, Led_status)
    if Led_status:
        print ('LED OFF...')
    else:
        print ('...LED ON')

# Define a main function for main process
def main():
# Set up a falling detect on BtnPin,
    # and callback function to swLed
    GPIO.add_event_detect(BtnPin, GPIO.FALLING, callback=swLed)
    while True:
        # Don't do anything.
        time.sleep(1)

# Define a destroy function for clean up everything after
# the script finished
def destroy():
    # Turn off LED
    GPIO.output(LedPin, GPIO.HIGH)
    # Release resource
    GPIO.cleanup()

# If run this script directly, do:
if __name__ == '__main__':
    setup()
    try:
        main()
    # When 'Ctrl+C' is pressed, the program
    # destroy() will be executed.
    except KeyboardInterrupt:
        destroy()

Explication du Code

LedPin = 17

Définir GPIO17 comme broche LED

BtnPin = 18

Définir GPIO18 comme broche du bouton

GPIO.add_event_detect(BtnPin, GPIO.FALLING, callback=swLed)

Configurer une détection de chute sur BtnPin, et lorsque la valeur de BtnPin passe d’un niveau haut à un niveau bas, cela signifie que le bouton est enfoncé. L’étape suivante est d’appeler la fonction swLed.

def swLed(ev=None):
global Led_status
# Switch led status(on-->off; off-->on)
Led_status = not Led_status
GPIO.output(LedPin, Led_status)

Définir une fonction de rappel comme rappel du bouton. Lorsque le bouton est pressé pour la première fois et que la condition not Led_status est fausse, la fonction GPIO.output() est appelée pour allumer la LED. Lorsque le bouton est à nouveau enfoncé, l’état de la LED sera converti de faux à vrai, donc la LED s’éteindra.

Image du Phénomène

../_images/image153.jpeg