entrees_num.py
Cuatro botones o sensores digitales en D5, D6, D9, D10 monitorizados en bucle con cada cambio trazado por serie. El panel de depuración de todo montaje con varias entradas.
Hardware
Una Adafruit Feather nRF52840 Express (nRF52840, BLE 5) con NeoPixel, LED rojo, 2 MB de flash QSPI para CircuitPython y conector LiPo. Hasta cuatro botones o salidas digitales de 3,3 V; masas comunes con la Feather. Los pines son de 3,3 V: nada de 24 V ni 5 V en estas entradas.
Cableado
Cada botón entre su pin (D5/D6/D9/D10) y GND. Los pines vecinos 3V3 y GND sirven de rieles de prueba; nunca superar 3,3 V en una entrada.
Funcionamiento
Cada pin es un objeto digitalio con pull-up; el bucle compara con el estado guardado en un dict e imprime solo al cambiar, a 50 Hz. Ligero, legible, extensible.
Ejecución
CircuitPython (build feather_nrf52840_express) vía bootloader UF2 (doble reset); editar code.py en la unidad CIRCUITPY.
Variantes
Pasar a interrupciones (digitalio + alarm para despertar), contar pulsaciones por pin, o enviar el estado por BLE UART a un teléfono.
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)