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éthodeLe 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).

1
import time
2
from adafruit_circuitplayground.express import cpx
3
4
while True:
5
    print("Luminosite:", cpx.light)
6
    time.sleep(1)

MéthodeTracer un graphique

1
import time
2
from adafruit_circuitplayground.express import cpx
3
4
while True:
5
    print("Light:", cpx.light)
6
    print((cpx.light,))
7
    time.sleep(1)
8

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éthodeDé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 :

1
import time
2
from adafruit_circuitplayground.express import cpx
3
import simpleio
4
5
cpx.pixels.auto_write = False
6
cpx.pixels.brightness = 0.1
7
8
while True:
9
    # light value remapped to pixel position
10
    peak = simpleio.map_range(cpx.light, 0, 320, 0, 10)
11
    print(cpx.light)
12
    print(int(peak))
13
14
    for i in range(0, 10, 1):
15
        if i <= peak:
16
            cpx.pixels[i] = (255, 0, 255)
17
        else:
18
            cpx.pixels[i] = (0, 0, 0)
19
    cpx.pixels.show()
20
    time.sleep(0.05)

A présent, plus il y aura de lumière, plus il y aura de LEDs d'allumées !

Complémentmodule 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.

ExempleExemple 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