entrees_num.py
Quatre boutons ou capteurs numériques sur D5, D6, D9, D10 — les broches Feather telles quelles — sont surveillés en boucle et chaque changement est tracé sur la console série. Le tableau de bord de débogage de tout montage à entrées multiples.
Matériel requis
Une Adafruit Feather nRF52840 Express (SoC nRF52840 Cortex-M4F, BLE 5 / 802.15.4) avec NeoPixel embarqué, LED rouge, 2 Mo de flash QSPI pour le système de fichiers CircuitPython et connecteur batterie LiPo. Jusqu’à quatre boutons ou sorties numériques 3,3 V ; masses communes avec la Feather. Les broches sont en 3,3 V, pas de 24 V ni 5 V sur ces entrées.
Câblage
Chaque bouton entre sa broche (D5/D6/D9/D10) et GND. Les broches voisines 3V3 et GND servent de rails de test ; ne jamais dépasser 3,3 V sur une entrée.
Fonctionnement
Chaque broche est un objet digitalio avec pull-up ; la boucle compare à l’état mémorisé dans un dict et n’imprime que sur changement, à 50 Hz. Léger, lisible, extensible.
Exécution
CircuitPython (build feather_nrf52840_express) installé via le bootloader UF2 (double reset) ; éditer code.py sur le lecteur CIRCUITPY, console dans Mu/Thonny.
Variantes
Passer à des interruptions (digitalio + alarm pour réveil), compter les appuis par broche, ou pousser l’état sur BLE UART vers un téléphone.
entrees_num.py
# Moniteur de 4 entrées : D5, D6, D9, D10 (broches Feather marquées).
# Trace l'état sur la console série (Ctrl-C dans Mu/Thonny pour sortir).
import time
import board
import digitalio
ENTREES = {}
for nom, broche in [("D5", board.D5), ("D6", board.D6),
("D9", board.D9), ("D10", board.D10)]:
ligne = digitalio.DigitalInOut(broche)
ligne.direction = digitalio.Direction.INPUT
ligne.pull = digitalio.Pull.UP
ENTREES[nom] = ligne
dernier = {}
while True:
for nom, ligne in ENTREES.items():
etat = ligne.value
if dernier.get(nom) != etat: # trace sur changement
print(nom, "->", "ENFONCE" if not etat else "libre")
dernier[nom] = etat
time.sleep(0.02)