4.3.2 Light Intensity Detector

4.3.2.1 Übersicht

Img

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

4.3.2.2 Komponentenwissen

Img

Microbit Light Sensor

Img

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

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

4.3.2.3 Benötigte Komponenten

Img

Img

Img

micro:bit V2 Hauptplatine ×1

micro:bit Shield ×1

OLED-Anzeige ×1

Img

Img

Img

micro USB-Kabel ×1

4-poliges Kabel ×1

Batteriefach ×1

Img

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

4.3.2.5 Programmfluss

Img

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

Img

⚠️ Tipp 2: Der Schwellenwert in der “if()…elif()…” Bedingung kann je nach tatsächlicher Situation angepasst werden.

Vollständiger Code:

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

Kurze Erklärung:

① Importiere die Bibliotheken microbit, oled_ssd1306 und music.

# import related libraries
from microbit import *
from oled_ssd1306 import *
import music

② Definiere zwei Muster.

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.

initialize()  # initialize oled
clear_oled()  # clear oled

④ Lese den Helligkeitswert vom micro:bit und zeige ihn auf dem OLED an.

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 und der Lautsprecher gibt Warnton 1 aus.

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 und der Lautsprecher gibt Warnton 2 aus.

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.

else: # or
   display.clear()  # Set the brightness of all LEDs to 0 (off)
   music.reset()    # no tone

⑥ Warte 1000 ms (1 s).

sleep(1000)

4.3.2.7 Testergebnis

Img

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

Nach dem Hochladen des Testcodes drücken Sie die Reset-Taste auf der Rückseite des micro:bit.

Img

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 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 und der Lautsprecher gibt Warnton 2 als niedrige Warnstufe aus. Andernfalls zeigt die 5×5-LED-Matrix nichts und der Lautsprecher bleibt stumm.

Img

⚠️ 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