entrees_num.py

Adafruit Feather nRF52840 Express · Fichier : entrees_num.py · Langage : Python · Usage : Surveiller quatre entrées numériques

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)

← Retour à la fiche