<Raspberry Pi-25>
LCD(AQM0802A)にキャラクタ文字を表示させたいと思います。
10進数で32から255までの表示をさせるプログラムを下に示します。
LCDに1文字づつ表示して合計16文字表示すると画面をクリアして次の16文字表示
して行き255文字で終わります。同時にターミナルにも16文字毎に改行して表示します。
LCDに表示する文字全てがターミナルに表示されるわけではありません。
LCDの文字コードが制御コードなどの場合は表示しません。
--------------------------------------------------------------------------------
#!/bin/sh
lcd_init() #LCD初期化 関数
{
i2cset -y 1 0x3e 0x00 0x38 0x39 0x14 0x70 0x56 0x6c 0x38 0x0C 0x01 i
}
lcd_dsp1() #LCD1行目データ表示 関数
{
i2cset -y 1 0x3e 0x40 $gyou1 i
}
lcd_dsp2() #カーソル位置2行目先頭に移動 関数
{
i2cset -y 1 0x3e 0x00 0xC0 b
}
fun_ascmoji() #アスキー10進数を文字変換 関数
{
printf "%b" $(printf '%s%x' '\x' $ascmoji)
}
fun_no()
{
echo -n $ascmoji":"
}
#-----メインプログラム-----#
echo ""
echo "アスキー10進数の32からスタート255で停止、CTRL+Cでも停止"
ascmoji=32 #アスキー開始10進数
lcd_init #LCD初期化
cnt=0 #8文字カウント用
cnt2=0 #16文字カウント用
fun_no
while [ true ]
do
cnt=`expr $cnt + 1 ` #8文字のカウントアップ
cnt2=`expr $cnt2 + 1 ` #16文字カウントアップ
fun_ascmoji #関数呼出 アスキー10進数を文字変換
gyou1=$ascmoji #LCD表示用変数gyou1に代入
lcd_dsp1
ascmoji=`expr $ascmoji + 1 ` #アスキー10進数のカウントアップ
if [ $ascmoji -eq 256 ] ; then
echo ""
exit
fi
if [ $cnt -eq 8 ] ; then
sleep 1
lcd_dsp2
cnt=0
fi
if [ $cnt2 -eq 16 ] ; then
sleep 1
lcd_init
cnt2=0
echo ""
fun_no
fi
sleep 0.5
done
--------------------------------------------------------------------------------
nanoエディタを使いasc.shのファイル名でプログラムします。 nano asc.shと入力してエンターキー
上のプログラムをコピーして、画面にマウスカーソルを置いて右クリック ペーストされます。
カーソルを一番上にしますと#の位置で止まります。 その位置でエンターキーで改行を1回以上(ここがポイントです)
CTRL+Xキー Yキーの後、エンターキー
asc.shが出来ました。 アクセス権を変更 chmod 755 asc.shエンターキー
実行します ./asc.shエンターキー この画像のようにターミナルでは表示します。
32から125までは、どの液晶でも同じキャラクタ文字が表示されるようですが
126以上では、液晶型番により違うようです。
下の画像をクリックしてください。
Raspberry Pi-26に続く・・・
Raspberry メニューに戻る