led_bouton.py
Le couple LED/bouton classique en CircuitPython : un bouton entre D5 et GND allume la LED rouge de la Feather. Le pull-up interne remplace la résistance externe, et l’inversion not bouton.value gère la logique active-basse sans if.
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. Un bouton poussoir ; la LED rouge est déjà sur la carte (board.LED défini par le port CircuitPython).
Câblage
Une patte du bouton sur la broche D5 marquée sur la carte, l’autre sur une broche GND. Pas de résistance : le pull-up interne de 40 kΩ fait le travail.
Fonctionnement
digitalio configure sortie/pull-up au démarrage ; la boucle copie simplement l’état inversé du bouton sur la LED. CircuitPython reste réactif car la boucle ne bloque sur rien.
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
Ajouter un anti-rebond avec time.monotonic, détecter les appuis longs, ou faire clignoter la LED en motif (SOS) quand le bouton est maintenu.
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.