analogique_lumiere.py
L’entrée A0 de la Feather lit 0-3,3 V sur 16 bits : avec un diviseur photorésistance / 10 kΩ, le script calcule la tension et décide jour/nuit. analogio renvoie directement une valeur 16 bits, pratique pour comparer sans faire de maths.
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. Une photorésistance (LDR) et une résistance 10 kΩ pour le diviseur ; toute autre source 0-3,3 V convient pour tester.
Câblage
3V3 → photorésistance → broche A0 → 10 kΩ → GND. Le point milieu va sur A0. Jamais plus de 3,3 V sur A0, l’ADC est en 3,3 V.
Fonctionnement
AnalogIn(board.A0).value échantillonne et met à l’échelle en 0-65535 ; la conversion en volts est triviale, et le seuil compare directement la valeur brute pour déclencher une logique nuit.
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
Remplacer la LDR par un capteur de flexion ou de lumière ambiante, moyenner sur N lectures, ou piloter le NeoPixel en fonction de la luminosité.
analogique_lumiere.py
# Photorésistance sur A0 : lecture 16 bits et seuil crépusculaire.
# Circuit : 3V3 -- [photorésistance] -- A0 -- [10k] -- GND.
import time
import board
import analogio
entree = analogio.AnalogIn(board.A0) # 0..65535 pour 0..3,3 V
SEUIL = 20000 # à ajuster : nuit tombante vers 20000 ici
while True:
brut = entree.value # déjà mis à l'échelle 16 bits
volts = brut * 3.3 / 65535
nuit = brut < SEUIL
print(f"A0={brut} ({volts:.2f} V) ->",
"NUIT" if nuit else "jour")
time.sleep(0.5)