🛠 Lire un bouton poussoir et afficher dans la console
Objectifs
Compléter le premier tutoriel en ajoutant une entrée numérique : un bouton poussoir lu par le microcontrôleur ATmega32U4 embarqué, avec affichage de l'état dans la console du PC x86 via pinpong. On apprend le câblage d'une entrée (résistance de pull-up), la lecture read_digital, et le rebond matériel. C'est la base de toute interaction homme-machine avec les broches.
Matériel
- LattePanda 3 Delta alimentée correctement (12 V ≥ 2 A ou USB-C PD ≥ 24 W)
- 1 bouton poussoir 2 broches ou 4 broches
- 1 résistance 10 kΩ (pull-up)
- Câbles Dupont
- Bibliothèque installée :
pip install pinpong
Code complet
Câblage : une patte du bouton → D2, l'autre → GND ; résistance 10 kΩ entre D2 et 3,3V (pull-up). Appui = D2 relié à GND = niveau 0.
import time
from pinpong.board import Board, Pin
Board("leonardo", "COM5").begin # Linux : "/dev/ttyACM0"
btn = Pin(Pin.D2, Pin.IN) # D2 en entrée numérique
etat_precedent = None
while True:
état = btn.read_digital # 0 quand le bouton est pressé (pull-up)
if état != etat_precedent: # n'afficher qu'aux changements
if état == 0:
print("Bouton PRESSÉ")
else:
print("Bouton relâché")
etat_precedent = état
time.sleep(0.05) # anti-rebond logiciel (50 ms)
Vérification attendue
À chaque appui, la console affiche « Bouton PRESSÉ » puis « Bouton relâché » au relâchement, sans salves parasites grâce à la temporisation de 50 ms. Couper le programme avec Ctrl+C.
Erreurs fréquentes
- Entrée laissée dans le vide : sans pull-up (ou pull-down), la broche flotte et affiche des états aléatoires. La résistance 10 kΩ vers 3,3 V est obligatoire avec ce câblage.
- Logique inversée : avec un pull-up, l'appui donne 0 et non 1. Si l'affichage semble inversé, c'est normal : c'est le câblage actif-à-l'état-bas.
- Mauvais port : encore une fois, c'est le port série virtuel du Leonardo (
/dev/ttyACM0sous Linux) qu'il faut donner àBoard. - Niveau logique : >
- Broche occupée : D2 n'est pas une broche PWM marquée
~(les PWM sont D3, D5, D6, D9, D10, D11, D13), mais elle est parfaitement utilisable en entrée numérique.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
clignotante.pyPythonbouton.pyPythonservo.pyPythonanalogique.pyPythonrespiration.pyPythonneopixel.pyPython