マイクロビット(c_06)BH1750FVI – GY-302用モジュール
BH1750FVI (I2C) c_lcd1608a_00.py
BH1750FVIはI2C接続の照度センサーです。※詳細はデータシートを参照ください。
BH1750FVI-GY-302センサーモジュールで使う自作の’c_bh1750_00.py’を作成しました。(※記事e_013を元にクラスにしました。)
‘c_bh1750_00.py’は末尾にあります。使い方だけを記載します。
使い方
ファイル転送
micro:bitへ’c_bh1750_00.py’を送った後でimportして使います。micro:bitに直接ファイルをアップロード出来ない場合(Thonny 3.1.12など)は、microfsなどを使ってアップロードします。
※microfsについては、当サイト内のこちらを参照ください。
※c_bh1750_00.pyの末尾に、使用例(c_bh1750_ex.py)の## example以降をコピペ追加しても動作確認できます。
メソッド
‘c_bh1750_00’をimportすると「’bh_mes’,’w_reg’ 」のメソッドが使えるようになります。
BH1750(mode)で初期化します。
測定の解像度、繰返し、ワンタイムの組合せで6種類あります。
defaultでは繰返し、高解像1lx 0x10にしています。
変更したい場合にはBH1750(0x20)のようにします。(ワンタイム、高解像1lx)
(1)bh_mes(mode=0x10)
照度を測定して値を返します。
(2)w_reg(value)
オペコードを送信します。リセットなど個別に操作します。※コード値はデータシートを参照を下さい。
使用例
照度を測定します。
c_bh1750_ex.py
from microbit import *
from c_bh1750_00 import BH1750
## example--------------------------------
# BH1750FVI GY-302
a=BH1750() # instance
lux=a.bh_mes() # 測定
print('Lux= %6.1f(lx)' % lux )
実行結果
>>> %Run c_bh1750_ex.py
Lux= 1050.0(lx)
Thonnyのshellで実行
>>> a.w_reg(0x07) # 0x07(reset)
>>> a.bh_mes() # 測定
0.0
>>> a.w_reg(0x10) # 0x10(mode) resetするとmodeの再設定が必要
>>> a.bh_mes() # 測定
1055.83
>>>
モジュール
c_bh1750_00.py
from microbit import *
# i2c.init(freq=100000, sda=pin20, scl=pin19)
## example--------------------------------
# BH1750FVI GY-302
class BH1750:
def __init__(self,gain=0x10,address=0x23):
# (0x10)cont_H-resp(1lux/bit) ~65536lx -max180msec
# ADDR='L'0x23(35) ADDR='H' 0x5c(92)
self.addr=address
self.mode=gain
#mesure mode set
self.w_reg(self.mode)
sleep(500)
# write opecode
def w_reg(self,opecode):
buf=bytearray(1)
buf[0]=opecode
i2c.write(self.addr,buf)
sleep(500)
# measuring lux
def bh_mes(self):
#H,L 2byte read data
r_data=i2c.read(self.addr,2)
H_byte=r_data[0]
L_byte=r_data[1]
# calculate
d_lux=H_byte << 8 | L_byte
self.lux=d_lux/1.2
return self.lux