### 4.3.2 Détecteur d'intensité lumineuse
#### 4.3.2.1 Présentation

Le détecteur d'intensité lumineuse, également appelé luxmètre ou mesureur d'éclairement, est un instrument spécialisé utilisé pour mesurer la quantité totale de lumière (c.-à-d. l'éclairement) qui frappe une surface. Il fonctionne principalement sur le principe de l'effet photoélectrique.
Dans ce projet, la luminosité détectée par le capteur de lumière sera affichée en temps réel sur l'OLED. Lorsqu'elle dépasse une certaine valeur, le haut-parleur sur la carte émettra une alarme pour servir d'avertissement et de rappel.
Les détecteurs d'intensité lumineuse sont largement utilisés dans presque toutes les situations nécessitant la quantification de la « lumière », telles que l'éclairage extérieur et routier, la conception et la réception de l'éclairage intérieur, la photographie et la production vidéo, l'architecture et la santé, etc.

#### 4.3.2.2 Connaissances sur les composants

**Capteur de lumière du Microbit**

Comme la carte micro:bit ne contient pas de photorésistance propre, la matrice LED assume ce rôle. Le signal lumineux est converti en entrée, et le temps de décroissance de la tension est échantillonné de sorte que l'intensité lumineuse détectée est une valeur relative. (**Remarque** : la luminosité est envoyée sur le port série, et il s'agit d'une valeur relative.)
**Haut-parleur du Microbit**

La carte Micro: Bit est dotée d'un haut-parleur intégré, ce qui facilite la production de sons par les programmes. Il est également capable de produire des sons tels que des rires, des salutations et des bâillements ainsi que toutes sortes de tons, notes et rythmes. Par exemple, il peut jouer la chanson Ode to Joy.

#### 4.3.2.3 Composants requis
| |  | |
| :--: | :--: | :--: |
| 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 Schéma de câblage
⚠️ **Lors du câblage, veuillez prêter attention à la couleur des fils.**
| 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 Flux du code

#### 4.3.2.6 Code de test
⚠️ **Astuce 1 : Avant de télécharger le code sur la carte Microbit, veuillez importer le fichier de bibliothèque “oled_ssd1306\.py” en vous référant à ** “[Import Library on MU](https://docs.keyestudio.com/projects/KS4050/en/latest/docs/MicroPython/MU_development_environment.html#import-library-on-mu)” .

⚠️ **Astuce 2 : Le seuil dans la condition “if()...elif()...” peut être modifié en fonction de la situation réelle.**
**Code complet :**
```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
'''
# import related libraries
from microbit import *
from oled_ssd1306 import *
import music
val1 = Image("90909:""09990:""99999:""09990:""90909") # Set pattern
val2 = Image("00000:""00900:""09990:""00900:""00000") # Set pattern
# initialize and clear oled
initialize() # initialize oled
clear_oled() # clear oled
while True:
clear_oled() # clear OLED
Lightintensity = display.read_light_level() # Read the light intensity detected by the microbit light sensor and assign it to the variable Lightintensity
add_text(0, 0, 'Lightintensity:') # Display the character string in the corresponding position of OLED
add_text(16, 0, str(Lightintensity)) # Display Lightintensity in the corresponding position of OLED
if Lightintensity >= 100: # when Light intensity > 100
display.show(val1) # LED matrix displays the set pattern1
music.play("C5:1") # speaker plays C5 tone
sleep(50)
music.play("D5:2") # speaker plays D5 tone
sleep(50)
music.play("B5:4") # speaker plays B5 tone
sleep(50)
elif Lightintensity > 0 and Lightintensity < 100: # when 0 < Light intensity < 100
display.show(val2) # LED matrix displays the set pattern2
music.play("C3:1") # speaker plays C3 tone
else: # or
display.clear() # Set the brightness of all LEDs to 0 (off)
music.reset() # no tone
sleep(1000)
```

**Brève explication :**
① Importer les bibliothèques microbit, oled_ssd1306 et music.
```Python
# import related libraries
from microbit import *
from oled_ssd1306 import *
import music
```
② Définir deux motifs.
```Python
val1 = Image("90909:""09990:""99999:""09990:""90909") # Set pattern
val2 = Image("00000:""00900:""09990:""00900:""00000") # Set pattern
```
③ Initialiser les pixels de l'OLED, effacer l'OLED.
```Python
initialize() # initialize oled
clear_oled() # clear oled
```
④ Lire la valeur de luminosité par le micro:bit et l'afficher sur l'OLED.
```Python
Lightintensity = display.read_light_level() # Read the light intensity detected by the microbit light sensor and assign it to the variable Lightintensity
add_text(0, 0, 'Lightintensity:') # Display the character string in the corresponding position of OLED
add_text(16, 0, str(Lightintensity)) # Display Lightintensity in the corresponding position of OLED
```
⑤ Instruction conditionnelle : if()...elif()...else...
Lorsque la luminosité détectée est supérieure ou égale à 100, la matrice 5×5 LED affiche , et le haut-parleur émet le son d'alarme 1.
```Python
if Lightintensity >= 100: # when Light intensity > 100
display.show(val1) # LED matrix displays the set pattern1
music.play("C5:1") # speaker plays C5 tone
sleep(50)
music.play("D5:2") # speaker plays D5 tone
sleep(50)
music.play("B5:4") # speaker plays B5 tone
sleep(50)
```
Si la luminosité détectée est comprise entre 0 et 100, la matrice 5×5 LED affiche , et le haut-parleur émet le son d'alarme 2.
```Python
elif Lightintensity > 0 and Lightintensity < 100: # when 0 < Light intensity < 100
display.show(val2) # LED matrix displays the set pattern2
music.play("C3:1") # speaker plays C3 tone
```
Sinon, la matrice 5×5 LED n'affiche rien et le haut-parleur ne sonne pas.
```Python
else: # or
display.clear() # Set the brightness of all LEDs to 0 (off)
music.reset() # no tone
```
⑥ Délai de 1000 ms (1 s).
```Python
sleep(1000)
```
#### 4.3.2.7 Résultat du test

Après le câblage et l'alimentation via le câble micro USB, connectez une alimentation externe (6 piles AA) pour assurer une alimentation suffisante, puis cliquez sur “Flash” pour télécharger le code sur la carte micro:bit.

Après avoir téléversé le code de test, appuyez sur le bouton reset à l'arrière du micro:bit.

L'OLED affiche en temps réel la valeur de luminosité détectée par le capteur de lumière. Lorsque la luminosité détectée est supérieure à 100, la matrice 5×5 LED affiche , et le haut-parleur émet le son d'alarme 1 comme avertissement de niveau élevé. Si la luminosité détectée est comprise entre 0 et 100, la matrice 5×5 LED affiche , et le haut-parleur émet le son d'alarme 2 comme avertissement de niveau faible. Sinon, la matrice 5×5 LED n'affiche rien et le haut-parleur ne sonne pas.

⚠️ **Remarque : Les briques de construction utilisées dans l'expérience ne sont pas incluses dans ce kit.**
(**Astuce :**) Si aucun résultat n'est observé, veuillez appuyer sur le bouton reset de la carte micro:bit.
