### 4.3.2 Light Intensity Detector #### 4.3.2.1 Übersicht ![Img](./media/top1.png) Der Lichtstärkemesser, auch bekannt als Beleuchtungsstärke-Messgerät oder Lux-Meter, ist ein spezielles Instrument zur Messung der Gesamtmenge an Licht (d.h. Beleuchtungsstärke), die auf eine Oberfläche fällt. Er arbeitet hauptsächlich auf Basis des photoelektrischen Effekts. In diesem Projekt wird die vom Lichtsensor erkannte Helligkeit in Echtzeit auf dem OLED angezeigt. Wenn sie einen bestimmten Wert überschreitet, gibt der Lautsprecher auf dem Board einen Alarm als Warnung und Erinnerung aus. Lichtstärkemesser werden in nahezu allen Situationen eingesetzt, in denen „Licht“ quantifiziert werden muss, z. B. Außen- und Straßenbeleuchtung, Innenbeleuchtungsplanung und Abnahme, Foto- und Videoproduktion, Architektur und Gesundheit usw. ![Img](./media/bottom1.png) #### 4.3.2.2 Komponentenwissen ![Img](./media/2top.png) **Microbit Light Sensor** ![Img](./media/j101.png) Da das micro:bit Board keinen eigenen Fotowiderstand enthält, übernimmt die LED-Matrix diese Aufgabe. Das Lichtsignal wird in einen Eingang umgewandelt, und die Abklingzeit der Spannung wird abgetastet, sodass die erkannte Lichtstärke ein relativer Wert ist. (**Hinweis**: die Lichthelligkeit wird auf die serielle Schnittstelle ausgegeben und ist ein relativer Wert.) **Microbit Speaker** ![Img](./media/j901.png) Das Micro:bit-Board verfügt über einen eingebauten Lautsprecher, der das Ausgeben von Tönen in Programmen erleichtert. Er kann Geräusche wie Kichern, Begrüßungen oder Gähnen sowie verschiedene Tonhöhen, Noten und Rhythmen erzeugen. Zum Beispiel kann er das Lied Ode to Joy spielen. ![Img](./media/2bottom.png) #### 4.3.2.3 Benötigte Komponenten | ![Img](./media/microbitV2.png)| ![Img](./media/ExpansionBoard.png) |![Img](./media/OLED.png) | | :--: | :--: | :--: | | micro:bit V2 Hauptplatine ×1 | micro:bit Shield ×1 | OLED-Anzeige ×1 | |![Img](./media/usb.png) |![Img](./media/4pin.png)|![Img](./media/batterycase.png)| | micro USB-Kabel ×1 | 4-poliges Kabel ×1 | Batteriefach ×1 | |![Img](./media/AAbattery.png)| | | |AA-Batterien(**selbst bereitgestellt**) ×6| | | #### 4.3.2.4 Anschlussdiagramm ⚠️ **Beim Anschließen bitte auf die Kabelfarben achten.** | 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 Programmfluss ![Img](./media/flow-chart-02.png) #### 4.3.2.6 Testcode ⚠️ **Tipp 1: Bevor Sie den Code auf das Microbit-Board herunterladen, importieren Sie bitte die Bibliotheksdatei “oled_ssd1306\.py” entsprechend ** “[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) ⚠️ **Tipp 2: Der Schwellenwert in der “if()...elif()...” Bedingung kann je nach tatsächlicher Situation angepasst werden.** **Vollständiger Code:** ```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) **Kurze Erklärung:** ① Importiere die Bibliotheken microbit, oled_ssd1306 und music. ```Python # import related libraries from microbit import * from oled_ssd1306 import * import music ``` ② Definiere zwei Muster. ```Python val1 = Image("90909:""09990:""99999:""09990:""90909") # Set pattern val2 = Image("00000:""00900:""09990:""00900:""00000") # Set pattern ``` ③ Initialisiere das OLED und lösche es. ```Python initialize() # initialize oled clear_oled() # clear oled ``` ④ Lese den Helligkeitswert vom micro:bit und zeige ihn auf dem OLED an. ```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 ``` ⑤ Entscheidungsanweisung: if()...elif()...else... Wenn die erkannte Helligkeit größer oder gleich 100 ist, zeigt die 5×5-LED-Matrix ![Img](./media/AAB2.png) und der Lautsprecher gibt Warnton 1 aus. ```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) ``` Wenn die erkannte Helligkeit zwischen 0 und 100 liegt, zeigt die 5×5-LED-Matrix ![Img](./media/AAB1.png) und der Lautsprecher gibt Warnton 2 aus. ```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 ``` Andernfalls zeigt die 5×5-LED-Matrix nichts und der Lautsprecher bleibt stumm. ```Python else: # or display.clear() # Set the brightness of all LEDs to 0 (off) music.reset() # no tone ``` ⑥ Warte 1000 ms (1 s). ```Python sleep(1000) ``` #### 4.3.2.7 Testergebnis ![Img](./media/4top.png) Nach dem Anschließen und Einschalten über das micro USB-Kabel, schließen Sie die externe Stromversorgung (6 AA-Batterien) an, um eine ausreichende Stromversorgung sicherzustellen, und klicken Sie auf “Flash”, um den Code auf das micro:bit Board herunterzuladen. ![Img](./media/A124.png) Nach dem Hochladen des Testcodes drücken Sie die Reset-Taste auf der Rückseite des micro:bit. ![Img](./media/A455.png) Das OLED zeigt den vom Lichtsensor erfassten Helligkeitswert in Echtzeit an. Wenn die erkannte Helligkeit größer als 100 ist, zeigt die 5×5-LED-Matrix ![Img](./media/AAB2.png) und der Lautsprecher gibt Warnton 1 als hohe Warnstufe aus. Liegt die erkannte Helligkeit zwischen 0 und 100, zeigt die 5×5-LED-Matrix ![Img](./media/AAB1.png) und der Lautsprecher gibt Warnton 2 als niedrige Warnstufe aus. Andernfalls zeigt die 5×5-LED-Matrix nichts und der Lautsprecher bleibt stumm. ![Img](./media/dongtu-2.gif) ⚠️ **Hinweis: Die Bausteine im Experiment sind nicht in diesem Kit enthalten.** (**Tipp:** Wenn kein Ergebnis beobachtet wird, drücken Sie bitte die Reset-Taste des micro:bit Boards.) ![Img](./media/4bottom.png)