ラズパイでAQM0802(i2c接続小型LCDモジュール)を使おう
こんばんは。國松です。
今回はi2c接続の小型LCDのAQM0802に文字を表示していきたいと思います。i2c接続のLCDといえば散々苦しめられたACM1602Nを思い出しますが、ここは気持ちを切り替えていきたいと思います。
今回使うAQM0802はi2c接続小型キャラクタLCD(AQM0802)をRaspBerryPiで使用する為にバスリピーターIC(PCA9515)を実装したRaspberryPI用変換モジュールの組み立て済完成品です。
参考サイト
DIY環境(I2C接続AQMシリーズのキャラクタ表示LCDをラズパイで使う (1) AQM0802)
参考書籍
用意するもの
1.Raspberry Pi3 Model B+ (OsはRaspbian)
2.AQM0802
今回はちょっとお行儀が悪い? ですがラズパイのGPIOピンに直接さしていきます。
ジャンパワイヤで接続する場合はオスーメスのジャンパワイヤを使用してラズパイのGPIOピンに直接接続してください。T型接続キットを使うをi2cErrorが出る可能性があります。
AQM0802 | ラズパイ |
3v3 | 3.3v |
SDA | SDA(GPIO2) |
SCL | SCL(GPIO3) |
GND | GND |
以上の4線をつなげば動作します。
i2cdetect -y 1で接続を確認します。3eと表示されればきちんと接続できています。
『3e』がAQM0802のアドレスです。
・ターミナルからコマンドを入力してLCDに文字を表示
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | i2cset -y 1 0x00 0x38 #lcdの初期化 i2cset -y 1 0x00 0x39 i2cset -y 1 0x00 0x14 i2cset -y 1 0x00 0x73 i2cset -y 1 0x00 0x56 i2cset -y 1 0x00 0x6c i2cset -y 1 0x00 0x38 i2cset -y 1 0x00 0x01 i2cset -y 1 0x00 0x0c #ここまでlcdの初期化 i2cset -y 1 0x40 0x61 #a i2cset -y 1 0x40 0x62 #b i2cset -y 1 0x40 0x63 #c i2cset -y 1 0x40 0x64 #d i2cset -y 1 0x40 0x65 #e i2cset -y 1 0x40 0x41 #A i2cset -y 1 0x40 0x42 #B i2cset -y 1 0x40 0x43 #C |
次にプログラムでLCDに文字を表示したいと思います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | import smbus import time i2c = smbus.SMBus(1) # 1 is bus number i2c_addr=0x3e #lcd resister_aqm0802=0x00 data=0x40 clear=0x01 home=0x02 display_On=0x0f LCD_2ndline=0x40+0x80 def command( code ): i2c.write_byte_data(i2c_addr, resister_aqm0802, code) time.sleep(0.1) def writeLCD( message ): mojilist=[] for moji in message: mojilist.append(ord(moji)) i2c.write_i2c_block_data(i2c_addr, data, mojilist) time.sleep(0.1) def init_lcd (): command(0x38) command(0x39) command(0x14) command(0x73) command(0x56) command(0x6c) command(0x38) command(clear) command(display_On) #main init_lcd() command(clear) writeLCD("Hello!!") command(LCD_2ndline) writeLCD("World!!") |
データシートを読み解いてプログラムにするのはなかなか難易度が高く、参考サイトや書籍に頼りっぱなしでした。もう少し自在に文字を表示できるように頑張りたいと思います。