4.3.2 Light Intensity Detector

4.3.2.1 Overzicht

Img

De light intensity detector, ook wel de illuminance meter of Lux meter genoemd, is een gespecialiseerd instrument dat wordt gebruikt om de totale hoeveelheid licht (d.w.z. verlichtingssterkte) die op een oppervlak valt te meten. Het werkt voornamelijk op basis van het foto-elektrische effect.

In dit project wordt de door de lichtsensor gedetecteerde helderheid in realtime op de OLED weergegeven. Wanneer deze een bepaalde waarde overschrijdt, geeft de speaker op de board een alarm als waarschuwing en herinnering.

Light intensity detectors worden veel gebruikt in vrijwel alle situaties waarin het kwantificeren van “licht” vereist is, zoals buiten- en straatverlichting, binnenverlichtingsontwerp en -acceptatie, fotografie en videoproductie, architectuur en gezondheid, enz.

Img

4.3.2.2 Componentkennis

Img

Microbit Light Sensor

Img

Aangezien de micro:bit board geen eigen fotoresistor bevat, neemt de LED-matrix deze taak op zich. Het lichtsignaal wordt omgezet naar input, en de spanningsvervaltijd wordt bemonsterd zodat de gedetecteerde lichtintensiteit een relatieve waarde is. (Opmerking: de lichthelderheid wordt naar de seriële poort gestuurd en is een relatieve waarde.)

Microbit Speaker

Img

Micro: Bit board beschikt over een ingebouwde speaker, wat het maken van geluid in programma’s vergemakkelijkt. Het kan geluiden voortbrengen zoals giechels, begroetingen en geeuwen, evenals allerlei tonen, noten en ritmes. Bijvoorbeeld, het kan het nummer Ode to Joy spelen.

Img

4.3.2.3 Vereiste componenten

Img

Img

Img

micro:bit V2 main board ×1

micro:bit shield ×1

OLED display ×1

Img

Img

Img

micro USB cable ×1

4 pin wire ×1

battery holder ×1

Img

AA battery(zelf mee te brengen) ×6

4.3.2.4 Aansluitschema

⚠️ Let bij het aansluiten op de kleur van de draden.

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 Stroomdiagram van de code

Img

4.3.2.6 Testcode

⚠️ Tip 1: Voordat je de code naar de Microbit board downloadt, importeer je het bibliotheekbestand “oled_ssd1306.py” verwijzend naar Import Library on MU” .

Img

⚠️ Tip 2: De drempel in de “if()…elif()…” voorwaarde kan aangepast worden afhankelijk van de daadwerkelijke situatie.

Complete 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
'''
# importeer gerelateerde bibliotheken
from microbit import *
from oled_ssd1306 import *
import music

val1 = Image("90909:""09990:""99999:""09990:""90909")  # Stel patroon in
val2 = Image("00000:""00900:""09990:""00900:""00000")  # Stel patroon in

# initialiseer en wis OLED
initialize()  # initialiseer OLED
clear_oled()  # wis OLED

while True:
    clear_oled()  # wis OLED
    Lightintensity = display.read_light_level() # Lees de lichtintensiteit gedetecteerd door de micro:bit lichtsensor en ken deze toe aan de variabele Lightintensity
    add_text(0, 0, 'Lightintensity:')  # Toon de tekenreeks op de overeenkomstige positie van OLED
    add_text(16, 0, str(Lightintensity))  # Toon Lightintensity op de overeenkomstige positie van OLED
    if Lightintensity >= 100: # wanneer lichtintensiteit >= 100
       display.show(val1)   # LED-matrix toont patroon1
       music.play("C5:1")   # speaker speelt toon C5
       sleep(50)
       music.play("D5:2")   # speaker speelt toon D5
       sleep(50)
       music.play("B5:4")   # speaker speelt toon B5
       sleep(50)
    elif Lightintensity > 0 and Lightintensity < 100:  # wanneer 0 < lichtintensiteit < 100
       display.show(val2)   # LED-matrix toont patroon2
       music.play("C3:1")   # speaker speelt toon C3
    else: # anders
       display.clear()   # Zet de helderheid van alle LEDs op 0 (uit)
       music.reset()     # geen toon
    sleep(1000)

Img

Korte uitleg:

① Importeer de libraries microbit, oled_ssd1306 en music.

# importeer gerelateerde bibliotheken
from microbit import *
from oled_ssd1306 import *
import music

② Definieer twee patronen.

val1 = Image("90909:""09990:""99999:""09990:""90909")  # Stel patroon in
val2 = Image("00000:""00900:""09990:""00900:""00000")  # Stel patroon in

③ Initialiseer OLED-pixels en wis de OLED.

# initialiseer en wis OLED
initialize()  # initialiseer OLED
clear_oled()  # wis OLED

④ Lees de helderheidswaarde via de micro:bit en toon deze op de OLED.

Lightintensity = display.read_light_level() # Lees de lichtintensiteit gedetecteerd door de micro:bit lichtsensor en ken deze toe aan de variabele Lightintensity
add_text(0, 0, 'Lightintensity:')  # Toon de tekenreeks op de overeenkomstige positie van OLED
add_text(16, 0, str(Lightintensity))  # Toon Lightintensity op de overeenkomstige positie van OLED

⑤ Beslissingsstructuur: if()…elif()…else…

Wanneer de gedetecteerde helderheid groter dan of gelijk aan 100 is, toont de 5×5 LED-matrix Img, en geeft de speaker alarmgeluid 1.

if Lightintensity >= 100: # wanneer lichtintensiteit >= 100
   display.show(val1)   # LED-matrix toont patroon1
   music.play("C5:1")   # speaker speelt toon C5
   sleep(50)
   music.play("D5:2")   # speaker speelt toon D5
   sleep(50)
   music.play("B5:4")   # speaker speelt toon B5
   sleep(50)

Als de gedetecteerde helderheid tussen 0 en 100 ligt, toont de 5×5 LED-matrix Img, en geeft de speaker alarmgeluid 2.

elif Lightintensity > 0 and Lightintensity < 100:  # wanneer 0 < lichtintensiteit < 100
   display.show(val2)   # LED-matrix toont patroon2
   music.play("C3:1")   # speaker speelt toon C3

Anders toont de 5×5 LED-matrix niets en klinkt de speaker niet.

else: # anders
   display.clear()  # Zet de helderheid van alle LEDs op 0 (uit)
   music.reset()    # geen toon

⑥ Pauze van 1000 ms (1 s).

sleep(1000)

4.3.2.7 Testresultaat

Img

Na het aansluiten en inschakelen via de micro USB-kabel, koppel externe voeding (6 AA-batterijen) om voldoende stroom te garanderen, en klik “Flash” om de code naar de micro:bit board te downloaden.

Img

Na het uploaden van de testcode, druk op de resetknop aan de achterkant van de micro:bit.

Img

De OLED toont realtime de door de lichtsensor gedetecteerde helderheidswaarde. Wanneer de gedetecteerde helderheid groter is dan 100, toont de 5×5 LED-matrix Img, en geeft de speaker alarmgeluid 1 als een hoog-niveau waarschuwing. Als de gedetecteerde helderheid tussen 0 en 100 ligt, toont de 5×5 LED-matrix Img, en geeft de speaker alarmgeluid 2 als een laag-niveau waarschuwing. Anders toont de 5×5 LED-matrix niets en klinkt de speaker niet.

Img

⚠️ Opmerking: De bouwstenen in het experiment zijn niet inbegrepen in deze kit.

(Tip: Als er geen resultaat zichtbaar is, druk dan op de resetknop van de micro:bit board.)

Img