analogique_lumiere.py

Adafruit Feather nRF52840 Express · Fichier : analogique_lumiere.py · Langage : Python · Usage : Mesurer la lumière avec une entrée analogique

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)

← Retour à la fiche