### 4.3.2 Detector de intensidad de luz
#### 4.3.2.1 Visión general

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.

#### 4.3.2.2 Conocimiento de los componentes

**Microbit Light Sensor**

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**

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.

#### 4.3.2.3 Componentes requeridos
| |  | |
| :--: | :--: | :--: |
| 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 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 |

#### 4.3.2.5 Flujo de código

#### 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](https://docs.keyestudio.com/projects/KS4050/en/latest/docs/MicroPython/MU_development_environment.html#import-library-on-mu)” .

⚠️ **Consejo 2: El umbral en la condición “if()...elif()...” se puede modificar según la situación real.**
**Código completo:**
```Python
'''
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)
```

**Explicación breve:**
① Importar las librerías microbit, oled_ssd1306 y music.
```Python
# importar librerías relacionadas
from microbit import *
from oled_ssd1306 import *
import music
```
② Definir dos patrones.
```Python
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.
```Python
initialize() # inicializar oled
clear_oled() # borrar oled
```
④ Leer el valor de brillo con el micro:bit y mostrarlo en el OLED.
```Python
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 , y el altavoz emite el sonido de alarma 1.
```Python
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 , y el altavoz emite el sonido de alarma 2.
```Python
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.
```Python
else: # o
display.clear() # Establecer el brillo de todos los LEDs a 0 (apagado)
music.reset() # sin tono
```
⑥ Retardo de 1000 ms (1 s).
```Python
sleep(1000)
```
#### 4.3.2.7 Resultado de la prueba

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.

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

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 , 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 , 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.

⚠️ **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.)
