稼働中

マイクロビット(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]))