🛠 Bouton poussoir et messages dans la console
Objectifs
Cabler un bouton poussoir, comprendre le pull-up interne et afficher un message dans la console a chaque appui. Vous ecrirez deux versions : scrutation (polling) puis evenementielle, la methode recommandee par la documentation officielle avec gpiozero.
Materiel
- Raspberry Pi 4B, breadboard, cables Dupont
- 1 bouton poussoir, 1 LED, 2 résistances 330 ohms
- python3-gpiozero (preinstalle sur le bureau, sinon sudo apt install python3-gpiozero)
Code complet
#!/usr/bin/env python3
# bouton.py - GPIO17 (broche 11) -> 330R -> LED -> GND ; GPIO27 (broche 13) <- bouton <- GND
from gpiozero import LED, Button
from signal import pause
led = LED(17) # sortie active a l'état haut
btn = Button(27, pull_up=True) # pull-up interne, appui actif a l'état bas
while True:
if btn.is_pressed:
print("Bouton appuye !")
led.on
else:
led.off
# Version evenementielle recommandee :
# btn.when_pressed = led.on
# btn.when_released = led.off
# pause
Verification attendue
python3 bouton.py puis un appui : le message Bouton appuye ! s'affiche et la LED s'allume, elle s'eteint a la relache. Ctrl+C termine proprement le script.
Erreurs frequentes
- Oublier le pull-up (interne ou 10 kOhms externe) : l'entrée flotte et affiche des appuis fantomes.
- Coder le bouton vers 3.3 V au lieu de GND : avec le pull-up actif, il faut un appui vers GND.
- Pas de pull_up=True dans le code alors que le cablage suppose un pull-up externe.
- Scrutation en boucle serree qui consomme un coeur entier : preferez when_pressed et pause.
- Confusion physique/BCM : broche 13 = GPIO27, broche 11 = GPIO17.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
led_blink.pyPythonbutton_led.pyPythonservo_sweep.pyPythondht_temp.pyPythonoled_i2c.pyPythonmcp3008_read.pyPython