lumiere.py
Sans aucun capteur externe, la matrice 5×5 sert de photodiode : read_light_level() renvoie 0 (nuit) à 255 (plein soleil). Le script classe l'ambiance et l'affiche par une icône, avec la valeur brute sur la console série.
Matériel requis
Une BBC micro:bit V2 (nRF52833, matrice 5×5 LED, boutons A/B, accéléromètre + boussole, microphone et haut-parleur) alimentée par USB ou pile. Aucun composant : la mesure utilise les LED de la matrice elles-mêmes.
Câblage
Aucun câblage. Évitez l'ombre de votre main ou du câble USB pendant la mesure.
Fonctionnement
display.read_light_level() pulse les LED en entrée, mesure le courant de fuite et moyenne sur toute la matrice. Le seuil détermine l'icône affichée.
Exécution
Ouvrez python.microbit.org, collez le programme MicroPython et envoyez-le vers la carte (la micro:bit apparaît comme lecteur MICROBIT). Appuyez sur reset pour relancer.
Variantes
Pilotez une LED externe sur pin0 au-dessus du seuil (veilleuse automatique), ou journalisez lux + température toutes les minutes.
lumiere.py
# Luminosite ambiante : la matrice LED sert de capteur (photo-diode).
from microbit import *
SEUIL_NUIT = 20 # en dessous : nuit
SEUIL_JOUR = 200 # au-dessus : plein jour
while True:
lux = display.read_light_level() # 0..255
if lux < SEUIL_NUIT:
affiche = Image.NO
etat = 'NUIT'
elif lux > SEUIL_JOUR:
affiche = Image.YES
etat = 'JOUR'
else:
affiche = Image.HAPPY
etat = 'INTERIEUR'
display.show(affiche)
print('lumiere = %d -> %s' % (lux, etat))
sleep(500)
# Principe : chaque LED LED est une photodiode ; on mesure le
# courant de fuite apres une breve impulsion de lumiere. Plus la
# piece est claire, plus la valeur est elevee.
# Astuce : pour une mesure stable, cachez la carte 1 s puis
# comparez avec la valeur a l'air libre.