<Raspberry Pi-30> LCD(AQM0802A)文字表示のシェルスクリプトプログラムを紹介します。 尚、<Raspberry Pi-23>を参照してソフト関連の作業を行っておいてください。 下のプログラムソースで、---プログラムここから---と---プログラムここまで---は コピーペーストしないでください。 <文字表示の基本> ------------------------プログラムここから------------------------------ #!/bin/sh #LCD初期化関数 lcd_init() { i2cset -y 1 0x3e 0x00 0x38 0x39 0x14 0x70 0x56 0x6c i sleep 0.3 i2cset -y 1 0x3e 0x00 0x38 0x0C 0x01 i } #############################メインプログラム########################## #LCD初期化関数呼出 lcd_init #LCD初期化して0.5秒待つ sleep 0.5 #Aの表示、下の0x41がA 0x42に変えるとBが表示 i2cset -y 1 0x3e 0x40 0x41 i ------------------------プログラムここまで------------------------------ <変数を使う> ------------------------プログラムここから------------------------------ #!/bin/sh #LCD初期化関数 lcd_init() { i2cset -y 1 0x3e 0x00 0x38 0x39 0x14 0x70 0x56 0x6c i sleep 0.3 i2cset -y 1 0x3e 0x00 0x38 0x0C 0x01 i } #############################メインプログラム########################## #LCD初期化関数呼出 lcd_init #表示データ B(0x42) を変数dataに入れる data=0x42 sleep 0.5 #文字表示 i2cset -y 1 0x3e 0x40 $data i ------------------------プログラムここまで------------------------------ <直接文字の表示> 表示させたいAを変数mojiに入れてそのmojiデータを16進数に変換して表示する ------------------------プログラムここから------------------------------ #!/bin/sh #LCD初期化関数 lcd_init() { i2cset -y 1 0x3e 0x00 0x38 0x39 0x14 0x70 0x56 0x6c i sleep 0.3 i2cset -y 1 0x3e 0x00 0x38 0x0C 0x01 i } #文字16進数変換関数 moji_conv16() { data=$(printf "%x" \'$moji) data="0x"$data } #############################メインプログラム########################## lcd_init #表示データ moji="C" sleep 0.5 #文字16進数変換関数呼出 moji_conv16 #文字表示 i2cset -y 1 0x3e 0x40 $data i ------------------------プログラムここまで------------------------------ <文字表示位置の変更> 表示させたいDの表示位置を1行目2列目に表示する ------------------------プログラムここから------------------------------ #!/bin/sh #LCD初期化関数 lcd_init() { i2cset -y 1 0x3e 0x00 0x38 0x39 0x14 0x70 0x56 0x6c i sleep 0.3 i2cset -y 1 0x3e 0x00 0x38 0x0C 0x01 i } #############################メインプログラム########################## #LCD初期化関数呼出 lcd_init sleep 0.5 #表示のアドレスを変える下の場合のアドレス0x81 i2cset -y 1 0x3e 0x00 0x81 i #Dの表示、下の0x44がD i2cset -y 1 0x3e 0x40 0x44 i ------------------------プログラムここまで------------------------------ <文字表示位置の変更2> Eを1行3列目に、Fを2行4列目に表示する ------------------------プログラムここから------------------------------ #!/bin/sh #LCD初期化関数 lcd_init() { i2cset -y 1 0x3e 0x00 0x38 0x39 0x14 0x70 0x56 0x6c i sleep 0.3 i2cset -y 1 0x3e 0x00 0x38 0x0C 0x01 i } #############################メインプログラム########################## #LCD初期化関数呼出 lcd_init sleep 0.5 #表示位置を1行3列目 i2cset -y 1 0x3e 0x00 0x82 i #Eの表示、下の0x41がE i2cset -y 1 0x3e 0x40 0x45 i #表示位置を2行4列目 i2cset -y 1 0x3e 0x00 0xC3 i #Fの表示、下の0x46がF i2cset -y 1 0x3e 0x40 0x46 i ------------------------プログラムここまで------------------------------ <文字を動かす> 下の画像をクリックしてください。 ------------------------プログラムここから------------------------------ #!/bin/sh #LCD初期化関数 lcd_init() { i2cset -y 1 0x3e 0x00 0x38 0x39 0x14 0x70 0x56 0x6c i sleep 0.3 i2cset -y 1 0x3e 0x00 0x38 0x0C 0x01 i } dsp_clear() { i2cset -y 1 0x3e 0x00 0x01 i } #############################メインプログラム########################## #LCD初期化関数呼出 lcd_init sleep 0.5 #表示位置を1行1列目 i2cset -y 1 0x3e 0x00 0x80 i #→の表示、下の0x07が→ i2cset -y 1 0x3e 0x40 0x07 i sleep 0.5 #表示をクリアー dsp_clear #表示位置を1行2列目 i2cset -y 1 0x3e 0x00 0x81 i i2cset -y 1 0x3e 0x40 0x07 i sleep 0.5 dsp_clear #表示位置を1行3列目 i2cset -y 1 0x3e 0x00 0x82 i i2cset -y 1 0x3e 0x40 0x07 i sleep 0.5 dsp_clear #表示位置を1行4列目 i2cset -y 1 0x3e 0x00 0x83 i i2cset -y 1 0x3e 0x40 0x07 i sleep 0.5 dsp_clear #表示位置を1行5列目 i2cset -y 1 0x3e 0x00 0x84 i i2cset -y 1 0x3e 0x40 0x07 i sleep 0.5 dsp_clear #表示位置を1行6列目 i2cset -y 1 0x3e 0x00 0x85 i i2cset -y 1 0x3e 0x40 0x07 i sleep 0.5 dsp_clear #表示位置を1行7列目 i2cset -y 1 0x3e 0x00 0x86 i i2cset -y 1 0x3e 0x40 0x07 i sleep 0.5 dsp_clear #表示位置を1行8列目 i2cset -y 1 0x3e 0x00 0x87 i i2cset -y 1 0x3e 0x40 0x07 i ------------------------プログラムここまで------------------------------ <文字を動かす2> 下の画像をクリックしてください。 ------------------------プログラムここから------------------------------ #!/bin/sh #LCD初期化関数 lcd_init() { i2cset -y 1 0x3e 0x00 0x38 0x39 0x14 0x70 0x56 0x6c i sleep 0.3 i2cset -y 1 0x3e 0x00 0x38 0x0C 0x01 i } #表示クリアー関数 dsp_clear() { i2cset -y 1 0x3e 0x00 0x01 i } #文字アドレス関数 dsp_add() { i2cset -y 1 0x3e 0x00 $add i } #############################メインプログラム########################## #LCD初期化関数呼出 lcd_init sleep 0.5 cnt=0 add=0 #左から右に表示 while [ $cnt -le 7 ] do #文字表示アドレス計算 add=$(( 0x80+$cnt )) #文字アドレス関数呼出 dsp_add i2cset -y 1 0x3e 0x40 0x07 i sleep 1 #表示クリアー関数呼出 dsp_clear cnt=$(( cnt+1 )) done cnt=0 add=0 #右から左に表示 while [ $cnt -le 8 ] do #文字表示アドレス計算 add=$(( 0x88-$cnt )) #文字アドレス関数呼出 dsp_add i2cset -y 1 0x3e 0x40 0x08 i sleep 1 #表示クリアー関数呼出 dsp_clear cnt=$(( cnt+1 )) done ------------------------プログラムここまで------------------------------ Raspberry Pi-31に続く・・・ Raspberry メニューに戻る