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