マイクロビット(c_07)AQM0802A 用モジュール
AQM0802A(I2C) c_aqm0802_00.py
AQM0802AはI2C 接続の 2行8桁表示液晶(LCD)です。※詳細はデータシートを参照ください。
AQM0802A-RN-GBWモジュールで使う自作の’c_aqm0802_00.py’を作成しました。使い方だけを記載します。(※記事e_009を元にクラスにしました。)’c_aqm0802_00.py’は末尾にあります。使い方だけを記載します。
使い方
ファイル転送
‘c_aqm0802_00.py’をmicro:bitへ送った後でimportして使います。micro:bitに直接ファイルをアップロード出来ない場合(Thonny 3.1.12など)は、microfsなどを使ってアップロードします。
※microfsについては、当サイト内のこちらを参照ください。
※c_aqm0802_00.pyの末尾に、使用例(c_aqm0802_ex.py)の## example以降をコピペ追加しても動作確認できます。
メソッド
‘c_aqm0802_00’をimportすると「aqm_init, aqm_off, aqm_on, aqm_setCursor, aqm_printStr, aqm_clear」のメソッドが使えるようになります。
AMQ0802()で初期化します。
(1)aqm_init(cur)
Cursorの状態を設定してLCDを初期化します。 off(default 0x0c) on(0x0e) on-blink(0x0f)
(2)aqm_on()
displayをONします。
(3)aqm_off()
displayをOFFします。
(4)aqm_setCursor(x,y)
Cursorの位置を設定します。(0,0)は1桁1行、(0,1)は1桁2行から文字を表示します。
(5)aqm_printStr(‘str’)
‘str’の文字を表示します。
(6)aqm_clear()
文字データを消去します。
使用例
c_aqm0802_ex.py
from microbit import *
from c_aqm0802_00 import AQM0802
# i2c.init(freq=100000, sda=pin20, scl=pin19)
## example--------------------------------
a=AQM0802() # instance
a.aqm_init(0x0f) # on-blink(0x0f)
sleep(1000)
a.aqm_setCursor(0,0) # (0,0) 1列1行目にカーソル移動
a.aqm_printStr("**test**") # 文字表示
sleep(1000)
a.aqm_setCursor(0,1) # (0,1) 1列2行目にカーソル移動
a.aqm_printStr("01234567") # 文字表示
sleep(1000)
a.aqm_off() # display off 表示が消えるだけ
sleep(1000)
a.aqm_on() # display on 表示
sleep(2000)
a.aqm_clear() # 文字消去
a.aqm_setCursor(0,0) # (0,0) 1列1行目にカーソル移動
a.aqm_printStr("-Clear-") # 文字表示
sleep(2000)
実行結果
>>> %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_aqm0802_00.py
from microbit import *
# AQM0802 8x2 LCDモジュール用
class AQM0802:
def __init__(self):
# AQM0802 slave address
self.adr_aqm=0x3e
# AQM0802の初期化
def aqm_init(self,cur=0x0c):
#contrast (OSC 0x14) follower control
d1=[0x38,0x39,0x14,0x70,0x56,0x6C]
# cur cursor off(defalt 0x0c),on(0x0e),blink(0x0f)
d2=[0x38,cur,0x01]
for i in d1:
self.lcd_cmd(i)
for i in d2:
self.lcd_cmd(i)
sleep(100)
# AQM0802への書込み
def lcd_cmd(self,value):
#CO = 0 終,RS = 0 command (0x00)
buf = bytearray(2)
buf[0]=0x00
buf[1]=value
i2c.write(self.adr_aqm, buf)
sleep(100)
#---------------------個別の関数
#***** 画面クリア 関数
def aqm_clear(self):
self.lcd_cmd(0x01)
#***** 画面表示Off 関数
def aqm_off(self):
self.lcd_cmd(0x08)
#***** 画面表示On 関数
def aqm_on(self):
self.lcd_cmd(0x0C)
#===== 続き文字表示 補助
def lcd_contdata(self,byte_x):
# CO = 1 続 , RS = 1 Data (0xC0)
buf = bytearray(2)
buf[0]=0xC0
buf[1]=byte_x
i2c.write(self.adr_aqm, buf)
#===== 最後文字表示 補助
def lcd_lastdata(self,byte_x):
#CO = 0 終, RS = 1 Data(0x40)
buf = bytearray(2)
buf[0]=0x40
buf[1]=byte_x
i2c.write(self.adr_aqm, buf)
#***** カーソル位置
def aqm_setCursor(self,byte_x, byte_y):
a=(0x80 | (byte_y * 0x40 + byte_x))
self.lcd_cmd(a)
#***** lcd に文字を表示
def aqm_printStr(self,pr):
n=len(pr)
for i in range(n-1):
self.lcd_contdata(ord(pr[i]))
self.lcd_lastdata(ord(pr[n-1]))