4.3.2 照度検出器

4.3.2.1 概要

Img

照度検出器(イリュミナンスメーター、Luxメーターとも呼ばれる)は、ある面に当たる光の総量(つまり照度)を測定するための専用機器です。主に光電効果に基づいて動作します。

このプロジェクトでは、光センサーで検出した明るさをOLEDにリアルタイム表示します。ある値を超えると、基板上のスピーカーがアラームを鳴らして注意・通知します。

照度検出器は、屋外・道路照明、屋内照明の設計・受入れ、写真・映像制作、建築や健康管理など、「光」を定量化する必要があるほとんどすべての場面で広く利用されています。

Img

4.3.2.2 部品の説明

Img

Microbit 光センサー

Img

micro:bit基板には独自のフォトレジスタが含まれていないため、LEDマトリクスがこの役割を担います。光信号は入力に変換され、電圧の減衰時間がサンプリングされることで、検出された照度は相対値として得られます。(:明るさはシリアルポートに出力され、相対値です。)

Microbit スピーカー

Img

Micro: Bit基板には組み込みスピーカーがあり、プログラムで音を出すのが容易です。笑い声や挨拶、あくびのような音のほか、さまざまな音階やビートを鳴らすことができます。たとえば、曲「Ode to Joy」を演奏できます。

Img

4.3.2.3 必要な部品

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電池(別途用意) ×6

4.3.2.4 配線図

⚠️ 配線の際は、ワイヤーの色に注意してください。

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 コードの流れ

Img

4.3.2.6 テストコード

⚠️ ヒント1: Microbitボードにコードをダウンロードする前に、ライブラリファイル “oled_ssd1306.py” をインポートしてください。参照MUでのライブラリのインポート” .

Img

⚠️ ヒント2: “if()…elif()…” 条件内のしきい値は実際の状況に応じて変更できます。

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
'''
# 関連ライブラリをインポート
from microbit import *
from oled_ssd1306 import *
import music

val1 = Image("90909:""09990:""99999:""09990:""90909")  # パターンを設定
val2 = Image("00000:""00900:""09990:""00900:""00000")  # パターンを設定

# OLEDを初期化してクリア
initialize()  # OLEDを初期化
clear_oled()  # OLEDをクリア

while True:
    clear_oled()  # OLEDをクリア
    Lightintensity = display.read_light_level() # microbitの光センサーで検出した照度を読み取り、変数Lightintensityに代入
    add_text(0, 0, 'Lightintensity:')  # OLEDの該当位置に文字列を表示
    add_text(16, 0, str(Lightintensity))  # OLEDの該当位置にLightintensityを表示
    if Lightintensity >= 100: # 照度が100以上のとき
       display.show(val1)   # 5×5LEDマトリクスにパターン1を表示
       music.play("C5:1")   # スピーカーがC5音を鳴らす
       sleep(50)
       music.play("D5:2")   # スピーカーがD5音を鳴らす
       sleep(50)
       music.play("B5:4")   # スピーカーがB5音を鳴らす
       sleep(50)
    elif Lightintensity > 0 and Lightintensity < 100:  # 照度が0より大きく100未満のとき
       display.show(val2)   # 5×5LEDマトリクスにパターン2を表示
       music.play("C3:1")   # スピーカーがC3音を鳴らす
    else: # それ以外
       display.clear()   # 全てのLEDの輝度を0(オフ)に設定
       music.reset()     # 音を止める
    sleep(1000)

Img

簡単な説明:

① microbit、oled_ssd1306、musicのライブラリをインポートします。

# 関連ライブラリをインポート
from microbit import *
from oled_ssd1306 import *
import music

② 2つのパターンを定義します。

val1 = Image("90909:""09990:""99999:""09990:""90909")  # パターンを設定
val2 = Image("00000:""00900:""09990:""00900:""00000")  # パターンを設定

③ OLEDのピクセルを初期化し、OLEDをクリアします。

initialize()  # OLEDを初期化
clear_oled()  # OLEDをクリア

④ microbitで明るさの値を読み取り、OLEDに表示します。

Lightintensity = display.read_light_level() # microbitの光センサーで検出した照度を読み取り、変数Lightintensityに代入
add_text(0, 0, 'Lightintensity:')  # OLEDの該当位置に文字列を表示
add_text(16, 0, str(Lightintensity))  # OLEDの該当位置にLightintensityを表示

⑤ 判定文:if()…elif()…else…

検出した明るさが100以上の場合、5×5 LEDマトリクスは Img を表示し、スピーカーはアラーム音1を鳴らします(高レベルの警告)。

if Lightintensity >= 100: # 照度が100以上のとき
   display.show(val1)   # 5×5LEDマトリクスにパターン1を表示
   music.play("C5:1")   # スピーカーがC5音を鳴らす
   sleep(50)
   music.play("D5:2")   # スピーカーがD5音を鳴らす
   sleep(50)
   music.play("B5:4")   # スピーカーがB5音を鳴らす
   sleep(50)

検出した明るさが0から100の間の場合、5×5 LEDマトリクスは Img を表示し、スピーカーはアラーム音2を鳴らします(低レベルの警告)。

elif Lightintensity > 0 and Lightintensity < 100:  # 照度が0より大きく100未満のとき
   display.show(val2)   # 5×5LEDマトリクスにパターン2を表示
   music.play("C3:1")   # スピーカーがC3音を鳴らす

それ以外の場合、5×5 LEDマトリクスは何も表示せず、スピーカーは鳴りません。

else: # それ以外
   display.clear()  # 全てのLEDの輝度を0(オフ)に設定
   music.reset()    # 音を止める

⑥ 1000ms(1秒)待機します。

sleep(1000)

4.3.2.7 テスト結果

Img

配線してmicro USBケーブルで電源を入れた後、外部電源(AA電池6本)に接続して十分な電源供給を確保し、“Flash” をクリックしてコードをmicro:bitボードにダウンロードします。

Img

テストコードをアップロードしたら、micro:bitの背面にあるリセットボタンを押してください。

Img

OLEDには光センサーで検出した明るさの値がリアルタイムに表示されます。検出した明るさが100より大きい場合、5×5 LEDマトリクスは Img を表示し、スピーカーは高レベルの警告としてアラーム音1を鳴らします。検出した明るさが0から100の間の場合、5×5 LEDマトリクスは Img を表示し、スピーカーは低レベルの警告としてアラーム音2を鳴らします。それ以外の場合、5×5 LEDマトリクスは何も表示せず、スピーカーは鳴りません。

Img

⚠️ 注意: 実験で使用しているブロックはこのキットに含まれていません。

(ヒント: 結果が表示されない場合は、micro:bitボードのリセットボタンを押してください。)

Img