4.3.2 Rilevatore di intensità luminosa
4.3.2.1 Panoramica

Il rivelatore di intensità luminosa, noto anche come illuminance meter o Lux meter, è uno strumento specializzato utilizzato per misurare la quantità totale di luce (ossia l’illuminamento) che incide su una superficie. Funziona principalmente basandosi sull’effetto fotoelettrico.
In questo progetto, la luminosità rilevata dal sensore di luce verrà visualizzata in tempo reale sull’OLED. Quando supera un certo valore, l’altoparlante sulla scheda emetterà un allarme come avviso e promemoria.
I rivelatori di intensità luminosa sono ampiamente utilizzati in quasi tutte le situazioni che richiedono la quantificazione della “luce”, come illuminazione esterna e stradale, progettazione e collaudo dell’illuminazione interna, fotografia e produzione video, architettura e salute, ecc.

4.3.2.2 Conoscenze dei componenti

Microbit Light Sensor

Poiché la scheda micro:bit non contiene un proprio fotoresistore, la matrice LED svolge questo compito. Il segnale luminoso viene convertito in input, e viene campionato il tempo di decadimento della tensione in modo che l’intensità luminosa rilevata sia un valore relativo. (Nota: la luminosità viene inviata alla porta seriale ed è un valore relativo.)
Microbit Speaker

La scheda Micro: Bit dispone di un altoparlante integrato, che facilita la produzione di suoni per i programmi. È in grado di emettere suoni come risatine, saluti e sbadigli, oltre a tutti i tipi di toni, note e battiti. Per esempio, può riprodurre la canzone Ode to Joy.

4.3.2.3 Componenti necessari
|
|
|
|---|---|---|
micro:bit V2 main board ×1 |
micro:bit shield ×1 |
OLED display ×1 |
|
|
|
micro USB cable ×1 |
4 pin wire ×1 |
battery holder ×1 |
|
||
AA battery(self-prepared) ×6 |
4.3.2.4 Schema di collegamento
⚠️ Quando esegui i collegamenti, presta attenzione al colore dei fili.
OLED display |
wire color |
micro:bit shield pin |
micro:bit board pin |
|---|---|---|---|
GND |
nero |
G |
G |
VCC |
rosso |
V2 |
V |
SDA |
blu |
20 |
P20 |
SCL |
verde |
19 |
P19 |

4.3.2.5 Flusso del codice

4.3.2.6 Codice di prova
⚠️ Suggerimento 1: Prima di scaricare il codice sulla scheda Microbit, importa il file di libreria “oled_ssd1306.py” facendo riferimento a “Import Library on MU” .

⚠️ Suggerimento 2: la soglia nella condizione “if()…elif()…” può essere modificata in base alla situazione reale.
Codice completo:
'''
Theme: Light intensity detector
Function: OLED displays the light intensity and the microbit light sensor controls the 5×5 dot matrix and speaker
Compiling IDE: MU 1.2.0
Author: https://docs.keyestudio.com
'''
# importa le librerie correlate
from microbit import *
from oled_ssd1306 import *
import music
val1 = Image("90909:""09990:""99999:""09990:""90909") # Imposta il pattern
val2 = Image("00000:""00900:""09990:""00900:""00000") # Imposta il pattern
# inizializza e cancella oled
initialize() # inizializza oled
clear_oled() # cancella oled
while True:
clear_oled() # cancella OLED
Lightintensity = display.read_light_level() # Legge l'intensità luminosa rilevata dal sensore di luce del microbit e la assegna alla variabile Lightintensity
add_text(0, 0, 'Lightintensity:') # Visualizza la stringa di caratteri nella posizione corrispondente dell'OLED
add_text(16, 0, str(Lightintensity)) # Visualizza Lightintensity nella posizione corrispondente dell'OLED
if Lightintensity >= 100: # quando l'intensità luminosa > 100
display.show(val1) # la matrice LED mostra il pattern impostato1
music.play("C5:1") # l'altoparlante riproduce il tono C5
sleep(50)
music.play("D5:2") # l'altoparlante riproduce il tono D5
sleep(50)
music.play("B5:4") # l'altoparlante riproduce il tono B5
sleep(50)
elif Lightintensity > 0 and Lightintensity < 100: # quando 0 < intensità luminosa < 100
display.show(val2) # la matrice LED mostra il pattern impostato2
music.play("C3:1") # l'altoparlante riproduce il tono C3
else: # altrimenti
display.clear() # Imposta la luminosità di tutti i LED a 0 (spento)
music.reset() # nessun tono
sleep(1000)

Breve spiegazione:
① Importare le librerie microbit, oled_ssd1306 e music.
# importa le librerie correlate
from microbit import *
from oled_ssd1306 import *
import music
② Definire due pattern.
val1 = Image("90909:""09990:""99999:""09990:""90909") # Imposta il pattern
val2 = Image("00000:""00900:""09990:""00900:""00000") # Imposta il pattern
③ Inizializzare i pixel dell’OLED, cancellare l’OLED.
initialize() # inizializza oled
clear_oled() # cancella oled
④ Leggere il valore di luminosità dal microbit e visualizzarlo sull’OLED.
Lightintensity = display.read_light_level() # Legge l'intensità luminosa rilevata dal sensore di luce del microbit e la assegna alla variabile Lightintensity
add_text(0, 0, 'Lightintensity:') # Visualizza la stringa di caratteri nella posizione corrispondente dell'OLED
add_text(16, 0, str(Lightintensity)) # Visualizza Lightintensity nella posizione corrispondente dell'OLED
⑤ Istruzione di selezione: if()…elif()…else…
Quando la luminosità rilevata è maggiore o uguale a 100, la matrice 5×5 di LED mostra
, e l’altoparlante emette il suono di allarme 1.
if Lightintensity >= 100: # quando l'intensità luminosa > 100
display.show(val1) # la matrice LED mostra il pattern impostato1
music.play("C5:1") # l'altoparlante riproduce il tono C5
sleep(50)
music.play("D5:2") # l'altoparlante riproduce il tono D5
sleep(50)
music.play("B5:4") # l'altoparlante riproduce il tono B5
sleep(50)
Se la luminosità rilevata è compresa tra 0 e 100, la matrice 5×5 di LED mostra
, e l’altoparlante emette il suono di allarme 2.
elif Lightintensity > 0 and Lightintensity < 100: # quando 0 < intensità luminosa < 100
display.show(val2) # la matrice LED mostra il pattern impostato2
music.play("C3:1") # l'altoparlante riproduce il tono C3
Altrimenti, la matrice 5×5 di LED non mostra nulla e l’altoparlante non emette suoni.
else: # altrimenti
display.clear() # Imposta la luminosità di tutti i LED a 0 (spento)
music.reset() # nessun tono
⑥ Pausa di 1000 ms (1 s).
sleep(1000)
4.3.2.7 Risultato del test

Dopo aver effettuato i collegamenti e aver alimentato tramite cavo micro USB, collegare l’alimentazione esterna (6 batterie AA) per garantire un’alimentazione sufficiente, e cliccare “Flash” per scaricare il codice sulla scheda micro:bit.

Dopo aver caricato il codice di prova, premere il pulsante di reset sul retro del micro:bit.

L’OLED mostra in tempo reale il valore di luminosità rilevato dal sensore di luce. Quando la luminosità rilevata è maggiore di 100, la matrice 5×5 di LED mostra
, e l’altoparlante emette il suono di allarme 1 come avviso di livello elevato. Se la luminosità rilevata è compresa tra 0 e 100, la matrice 5×5 di LED mostra
, e l’altoparlante emette il suono di allarme 2 come avviso di livello basso. Altrimenti, la matrice 5×5 di LED non mostra nulla e l’altoparlante non emette suoni.

⚠️ Nota: I mattoncini da costruzione nell’esperimento non sono inclusi in questo kit.
(Suggerimento: Se non si osservano risultati, premere il pulsante di reset della scheda micro:bit.)







