### 4.3.2 Détecteur d'intensité lumineuse #### 4.3.2.1 Présentation ![Img](./media/top1.png) 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. ![Img](./media/bottom1.png) #### 4.3.2.2 Connaissances sur les composants ![Img](./media/2top.png) **Capteur de lumière du Microbit** ![Img](./media/j101.png) 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** ![Img](./media/j901.png) 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. ![Img](./media/2bottom.png) #### 4.3.2.3 Composants requis | ![Img](./media/microbitV2.png)| ![Img](./media/ExpansionBoard.png) |![Img](./media/OLED.png) | | :--: | :--: | :--: | | micro:bit V2 main board ×1 | micro:bit shield ×1 | OLED display ×1 | |![Img](./media/usb.png) |![Img](./media/4pin.png)|![Img](./media/batterycase.png)| | micro USB cable ×1 | 4 pin wire ×1 | battery holder ×1 | |![Img](./media/AAbattery.png)| | | |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 | ![Img](./media/couj2.png) #### 4.3.2.5 Flux du code ![Img](./media/flow-chart-02.png) #### 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)” . ![Img](./media/WPSA1.png) ⚠️ **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) ``` ![Img](./media/line1.png) **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 ![Img](./media/AAB2.png), 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 ![Img](./media/AAB1.png), 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 ![Img](./media/4top.png) 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. ![Img](./media/A124.png) Après avoir téléversé le code de test, appuyez sur le bouton reset à l'arrière du micro:bit. ![Img](./media/A455.png) 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 ![Img](./media/AAB2.png), 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 ![Img](./media/AAB1.png), 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. ![Img](./media/dongtu-2.gif) ⚠️ **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. ![Img](./media/4bottom.png)