led_bouton.py
El clásico par LED/botón en CircuitPython: un botón entre D5 y GND enciende el LED rojo de la Feather. El pull-up interno sustituye la resistencia externa, y la inversión not bouton.value resuelve la lógica activa-bajo sin if.
Hardware
Una Adafruit Feather nRF52840 Express (nRF52840, BLE 5) con NeoPixel, LED rojo, 2 MB de flash QSPI para CircuitPython y conector LiPo. Un pulsador; el LED rojo ya está en la placa (board.LED lo define el port CircuitPython).
Cableado
Una pata del botón en el pin D5 marcado en la placa, la otra en cualquier pin GND. Sin resistencia: el pull-up interno de 40 kΩ hace el trabajo.
Funcionamiento
digitalio configura salida/pull-up al arrancar; el bucle solo copia el estado invertido del botón en el LED. CircuitPython sigue reactivo porque el bucle no bloquea en nada.
Ejecución
CircuitPython (build feather_nrf52840_express) vía bootloader UF2 (doble reset); editar code.py en la unidad CIRCUITPY.
Variantes
Añadir antirrebote con time.monotonic, detectar pulsaciones largas, o hacer parpadear el LED en un motivo (SOS) mientras se mantiene el botón.
led_bouton.py
# Bouton sur D5 -> LED rouge embarquée (board.LED).
# Le bouton est câblé entre D5 et GND ; pull-up interne activé.
import board
import digitalio
led = digitalio.DigitalInOut(board.LED)
led.direction = digitalio.Direction.OUTPUT
bouton = digitalio.DigitalInOut(board.D5)
bouton.direction = digitalio.Direction.INPUT
bouton.pull = digitalio.Pull.UP # relâché = HIGH, enfoncé = LOW
while True:
# not bouton.value : logique inversée car appui -> masse
led.value = not bouton.value
# Teste avec un simple bouton poussoir ; pour un interrupteur,
# cable un seul pole vers D5 et laisse le pull-up faire le reste.