Capteur de luminosité : Niveau facile
Dans ce tutoriel, nous allons utiliser le capteur de luminosité pour tracer une courbe de luminosité
La carte CPX dispose d'un capteur de lumière sur le côté droit, à côté de l'œil imprimé sur la carte. Il détecte la quantité de lumière ambiante et renvoie le niveau de lumière en fonction de ces données. Nous allons exploiter cette informaiton pour tracer une courbe de luminosité en utilisant la fonction graphique de mu.
Ce tutoriel reprend les informations disponibles sur le site d'Adafruit :
https://learn.adafruit.com/circuitpython-made-easy-on-circuit-playground-express/light
Méthode : Le programme
Le programme ne présente pas de difficultés particulières : On récupère la valeur du capteur via la propriété cpx.light
et on l'affiche toutes les secondes dans la console série avec print
.
Vous devriez voir défiler les valeurs lues par le capteur, comprises entre 0 (nuit) et 320 (pleine lumière).
import time
from adafruit_circuitplayground.express import cpx
while True:
print("Luminosite:", cpx.light)
time.sleep(1)
Méthode : Tracer un graphique
import time
from adafruit_circuitplayground.express import cpx
while True:
print("Light:", cpx.light)
print((cpx.light,))
time.sleep(1)
Le grapheur de Mu recherche des valeurs de type tuple : Les tuples en Python sont des valeurs entre parenthèses () séparées par des virgules. Si vous avez deux valeurs, un tuple ressemblerait à (1.0, 3.14). Puisque nous n'avons qu'une seule valeur, nous avons besoin de l'imprimer comme (1.0,) - notez les parenthèses autour du nombre, et la virgule après le nombre. D'où les parenthèses et virgules supplémentaires dans print((cpx.light,)).
Voici le type de graphe que l'on obtient
Complément :
Si on affiche un Tuple contenant 3 valeurs (exemple (3.1, 5.3, 7.2)), alors le grapheur affichera 3 courbes avec des couleurs différentes.
Méthode : Détecteur de luminosité lumineux
Vous pouvez également utiliser les valeurs lues par le capteur pour créer un effet amusant en utilisant les NeoPixels de la carte cpx! testez le code suivant :
import time
from adafruit_circuitplayground.express import cpx
import simpleio
cpx.pixels.auto_write = False
cpx.pixels.brightness = 0.1
while True:
# light value remapped to pixel position
peak = simpleio.map_range(cpx.light, 0, 320, 0, 10)
print(cpx.light)
print(int(peak))
for i in range(0, 10, 1):
if i <= peak:
cpx.pixels[i] = (255, 0, 255)
else:
cpx.pixels[i] = (0, 0, 0)
cpx.pixels.show()
time.sleep(0.05)
A présent, plus il y aura de lumière, plus il y aura de LEDs d'allumées !
Complément : module simpleio
Cet exemple est l'occasion de voir la fonction map_range()
du module simpleio. Cette fonction permet de convertir la luminosité qui est un entier entre 0 et 320 en un entier entre 0 et 9 puisqu'on a 10 LEDs.
Exemple : Exemple de projet : Mesurer la vitesse d'un hand-spinner - Niveau avancé
Le projet est décrit sur cette page du site Adafruit
https://learn.adafruit.com/fidget-spinner-tachometer/circuitpython