<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 メニューに戻る