先日、ラズパイで、小型のI2C LCD AQM0802Aの表示テストをしました。
ポイントを備忘録として、まとめておきます。(高齢者の仲間入りをして、かなり忘れっぽくなっています(笑))
まず、Raspberry PiでI2C通信を行うためには、メニュー→設定→Raspberry Piの設定→インターフェースと進み、
I2Cを有効にします。
Pythonのスクリプトでは、
smbusライブラリをインポートします。 import smbus
smbus.SMBus(bus_number)でコネクションオブジェクトを取得 例 bus = smbus.SMBus(1)
I2Cで、デバイスの書き込む方法は、2通り
複数のバイトを連続して書き込むには、 bus.write_i2c_block_data(addr,cmd,vals) #valsは、複数のバイト
1バイトを書き込むには、bus.write_i2c_byte_data(addr,cmd,val) #valは、1バイトデータ
addrrは、デバイスのI2Cアドレス、今回のAQM0802Aは、0x3e
cmdは、0x00の時、続くデータバイトは、コマンド
0x04の時は、データ
なお、AQM0802Aのコマンドと詳細な説明は、秋月電子のAQM0802Aのページにあるpdfデータを参照します。
AQM0802Aを初期化する方法もこのデータシートに書いてありますが、例えば、次のように行います。(拡張コマンドの次にfollower Control 0x6cが抜けています。失礼)
AQM0802Aのコントラスト調節は、ソフトで行います。上の図の拡張コマンドの部分で行っています。
具体的にはPowe/Icon/Contrastの下位2ビット+Contrast set の下位4ビットの6ビットでコントラストの数値を指定します。この値は、30~40で、電圧3Vの場合、32程度です。この例では、32=0x100000としいます。
他のコマンドは、LCD 1602とほぼ同じです。
初期化のスクリプトは、例えば、次のようになります。
addr = 0x3e
register_set = 0x00
register_disp = 0x40
として
def setup_AQM0802A():
bus.write_i2c_block_data(addr,register_set,[0x38,0x39,0x14,0x70,0x56,0x6c])
sleep(0.2)
bus.write_i2c_block_data(addr,register_set,[0x38,0x0c,0x01])
sleep(0.001)
他のコマンドについては、こちらからダウンロードしたスクリプトを参照します。