4.3.2 Detector de intensidad de luz

4.3.2.1 Visión general

Img

El detector de intensidad de luz, también conocido como luxímetro o medidor de iluminancia, es un instrumento especializado utilizado para medir la cantidad total de luz (es decir, la iluminancia) que incide sobre una superficie. Funciona principalmente basándose en el efecto fotoeléctrico.

En este proyecto, la luminosidad detectada por el sensor de luz se mostrará en tiempo real en el OLED. Cuando supere un cierto valor, el altavoz de la placa emitirá una alarma como advertencia y recordatorio.

Los detectores de intensidad de luz se utilizan ampliamente en casi todas las situaciones que requieren la cuantificación de la “luz”, como alumbrado exterior y vial, diseño y aceptación de iluminación interior, fotografía y producción de vídeo, arquitectura y salud, etc.

Img

4.3.2.2 Conocimiento de los componentes

Img

Microbit Light Sensor

Img

Dado que la placa micro:bit no contiene su propia fotorresistencia, la matriz de LED asumirá esta función. La señal de luz se convertirá en entrada, y se muestrea el tiempo de decaimiento del voltaje de forma que la intensidad de luz detectada sea un valor relativo. (Nota: el brillo de la luz se envía al puerto serial y es un valor relativo.)

Microbit Speaker

Img

La placa Micro: Bit cuenta con un altavoz integrado, lo que facilita que los programas reproduzcan sonido. También es capaz de emitir sonidos como risitas, saludos y bostezos, así como todo tipo de tonos, notas y ritmos. Por ejemplo, puede reproducir la canción Ode to Joy.

Img

4.3.2.3 Componentes requeridos

Img

Img

Img

micro:bit V2 main board ×1

micro:bit shield ×1

OLED display ×1

Img

Img

Img

micro USB cable ×1

4 pin wire ×1

battery holder ×1

Img

AA battery(self-prepared) ×6

4.3.2.4 Diagrama de conexiones

⚠️ Al cablear, por favor preste atención al color del cable.

OLED display

wire color

micro:bit shield pin

micro:bit board pin

GND

black

G

G

VCC

red

V2

V

SDA

blue

20

P20

SCL

green

19

P19

Img

4.3.2.5 Flujo de código

Img

4.3.2.6 Código de prueba

⚠️ Consejo 1: Antes de descargar el código a la placa Microbit, por favor importe el archivo de la librería “oled_ssd1306.py” refiriéndose a Import Library on MU” .

Img

⚠️ Consejo 2: El umbral en la condición “if()…elif()…” se puede modificar según la situación real.

Código 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
'''
# importar librerías relacionadas
from microbit import *
from oled_ssd1306 import *
import music

val1 = Image("90909:""09990:""99999:""09990:""90909")  # Establecer patrón
val2 = Image("00000:""00900:""09990:""00900:""00000")  # Establecer patrón

# inicializar y borrar oled
initialize()  # inicializar oled
clear_oled()  # borrar oled

while True:
    clear_oled()  # borrar OLED
    Lightintensity = display.read_light_level() # Leer la intensidad de luz detectada por el sensor de luz micro:bit y asignarla a la variable Lightintensity
    add_text(0, 0, 'Lightintensity:')  # Mostrar la cadena de caracteres en la posición correspondiente del OLED
    add_text(16, 0, str(Lightintensity))  # Mostrar Lightintensity en la posición correspondiente del OLED
    if Lightintensity >= 100: # cuando la intensidad de luz > 100
       display.show(val1)   # la matriz LED muestra el patrón1 establecido
       music.play("C5:1")   # el altavoz reproduce el tono C5
       sleep(50)
       music.play("D5:2")   # el altavoz reproduce el tono D5
       sleep(50)
       music.play("B5:4")   # el altavoz reproduce el tono B5
       sleep(50)
    elif Lightintensity > 0 and Lightintensity < 100:  # cuando 0 < intensidad de luz < 100
       display.show(val2)   # la matriz LED muestra el patrón2 establecido
       music.play("C3:1")   # el altavoz reproduce el tono C3
    else: # o
       display.clear()   # Establecer el brillo de todos los LEDs a 0 (apagado)
       music.reset()     # sin tono
    sleep(1000)

Img

Explicación breve:

① Importar las librerías microbit, oled_ssd1306 y music.

# importar librerías relacionadas
from microbit import *
from oled_ssd1306 import *
import music

② Definir dos patrones.

val1 = Image("90909:""09990:""99999:""09990:""90909")  # Establecer patrón
val2 = Image("00000:""00900:""09990:""00900:""00000")  # Establecer patrón

③ Inicializar los píxeles del OLED, borrar el OLED.

initialize()  # inicializar oled
clear_oled()  # borrar oled

④ Leer el valor de brillo con el micro:bit y mostrarlo en el OLED.

Lightintensity = display.read_light_level() # Leer la intensidad de luz detectada por el sensor de luz micro:bit y asignarla a la variable Lightintensity
add_text(0, 0, 'Lightintensity:')  # Mostrar la cadena de caracteres en la posición correspondiente del OLED
add_text(16, 0, str(Lightintensity))  # Mostrar Lightintensity en la posición correspondiente del OLED

⑤ Sentencia de juicio: if()…elif()…else…

Cuando la luminosidad detectada es mayor o igual a 100, la matriz de 5×5 LED muestra Img, y el altavoz emite el sonido de alarma 1.

if Lightintensity >= 100: # cuando la intensidad de luz > 100
   display.show(val1)   # la matriz LED muestra el patrón1 establecido
   music.play("C5:1")   # el altavoz reproduce el tono C5
   sleep(50)
   music.play("D5:2")   # el altavoz reproduce el tono D5
   sleep(50)
   music.play("B5:4")   # el altavoz reproduce el tono B5
   sleep(50)

Si la luminosidad detectada está entre 0 y 100, la matriz de 5×5 LED muestra Img, y el altavoz emite el sonido de alarma 2.

elif Lightintensity > 0 and Lightintensity < 100:  # cuando 0 < intensidad de luz < 100
   display.show(val2)   # la matriz LED muestra el patrón2 establecido
   music.play("C3:1")   # el altavoz reproduce el tono C3

De lo contrario, la matriz de 5×5 LED no muestra nada y el altavoz no suena.

else: # o
   display.clear()  # Establecer el brillo de todos los LEDs a 0 (apagado)
   music.reset()    # sin tono

⑥ Retardo de 1000 ms (1 s).

sleep(1000)

4.3.2.7 Resultado de la prueba

Img

Después de cablear y encender con el cable micro USB, conecte la alimentación externa (6 pilas AA) para asegurar un suministro de energía suficiente, y haga clic en “Flash” para descargar el código a la placa micro:bit.

Img

Después de subir el código de prueba, presione el botón de reinicio en la parte posterior del micro:bit.

Img

El OLED muestra el valor de brillo detectado por el sensor de luz en tiempo real. Cuando el brillo detectado es mayor que 100, la matriz de 5×5 LED muestra Img, y el altavoz emite el sonido de alarma 1 como advertencia de alto nivel. Si el brillo detectado está entre 0 y 100, la matriz de 5×5 LED muestra Img, y el altavoz emite el sonido de alarma 2 como advertencia de bajo nivel. De lo contrario, la matriz de 5×5 LED no muestra nada y el altavoz no suena.

Img

⚠️ Nota: Los bloques de construcción del experimento no están incluidos en este kit.

(Consejo: Si no se observa ningún resultado, por favor presione el botón de reinicio de la placa micro:bit.)

Img