もう少し自由にAQM0802に文字を表示してみます。そのためには液晶の仕様を知る必要がありますね。
AQM0802の仕様
AQM0802液晶の命令コードやキャラクタの文字コードがわかれば、i2csetコマンドでこの液晶を自由自在に操作できそうです。
部品にはデータシートがついていなかったのですが、スイッチサイエンスのサイトの工作記事から秋月(!)のサイトのデータシートにリンクが張られています。命令コードの方はぼやけていてよく読めないので改めてAQM0802で検索しなおしたらマルツパーツの鮮明な資料を見つけました。
とりあえず初期化処理はよくわからないけれどデータシートのサンプルをちょっと変えてカーソル表示ONにしただけでいいでしょう。それ以外の命令といえば改行ぐらいしか使わないかな。
液晶の初期化
いまひとつデータシートを読んでも何をしているのかわからない部分がありますが、とりあえず2回に分けてデータを送ればいいようです。
sudo i2cset -y 1 0x3e 0x00 0x38 0x39 0x14 0x70 0x56 0x6c i
sudo i2cset -y 1 0x3e 0x00 0x38 0x0d 0x01 i
2回に分けているのは、それぞれのコマンド送信間隔を200ミリ秒以上取る必要があるためです。データシートには電力を安定させるためだとあります。シェルのコマンドなら余裕で200ミリ秒以上の時間がかかるんでしょうね。
カーソル周りの制御
命令 | 命令コード | 内容 |
---|---|---|
Clear Display | 0x01 | 全画面消去 |
Return Home | 0x02 | ホームポジション(1行目1桁目)へ戻る |
Set DDRAM address | 0x80 / 0xc0 | 1行目1桁目へ移動(Return Homeと同じ)/ 2行目1桁目へ移動(改行と同じ) |
0x81 / 0xc1 | 1行目2桁目へ移動 / 2行目2桁目へ移動 | |
0x82 / 0xc2 | 1行目3桁目へ移動 / 2行目3桁目へ移動 | |
0x83 / 0xc3 | 1行目4桁目へ移動 / 2行目4桁目へ移動 | |
0x84 / 0xc4 | 1行目5桁目へ移動 / 2行目5桁目へ移動 | |
0x85 / 0xc5 | 1行目6桁目へ移動 / 2行目6桁目へ移動 | |
0x86 / 0xc6 | 1行目7桁目へ移動 / 2行目7桁目へ移動 | |
0x87 / 0xc7 | 1行目8桁目へ移動 / 2行目8桁目へ移動 | |
Display ON/OFF | 0xc0 | カーソルOFF |
0xd0 | カーソルON |
文字表示はカーソル位置に対して行われるので、データアドレス0x00にこれらのコードを送ってカーソル移動が制御できるようになると、結果的に文字表示位置を自由自在に指定できることになります。