AQM0802にはバックライトがついている。
値札に記載の商品名にも「バックライト付」と書いてあった。
バックライトのon/offはGPIO4をon/offすればよい。
GPIO4というのはピン番号でいうと3である。
GPIOをon/offするのは以前LEDを点灯させるときにやったので、
その時に作ったスクリプトを元に作った。
---
import RPi.GPIO as GPIO
import sys
x = int(sys.argv[1])
GPIO.setmode(GPIO.BCM)
GPIO.setup(4, GPIO.OUT)
if (x>0):
print('back light on')
GPIO.output(4, True)
else:
print('back light off')
GPIO.output(4, False)
GPIO.cleanup()
---
引数に0を指定するとオフ、1(0より大きい)だとオン
バックライトが光った!
GPIO.cleanupを実行するとバックライトが消えてしまうので、
オンにするときはcleanupしない。
すると、オフにするときに以下のようなwarningが出る。
backlight.py:9: RuntimeWarning: This channel is already in use, continuing anyway. Use GPIO.setwarnings(False) to disable warnings.
warningを消す方法が書いてあるくらいだから、気にしなくていいか。
このブログを検索
2019/11/10
2019/11/09
Raspberry Pi zeroでLCDディスプレイに文字を表示する
秋葉原に行って、秋月電子でRaspberry pi用のキャラクタLCDキットを買ってきた。
800何十円だった。
I2C液晶は AQM0802Aというもので8文字 x 2列表示できる。
それをラズパイに接続させるための変換基盤(PCA9515)と、ピンヘッダにさすためのソケットがついていて、液晶とソケットをはんだ付けする。
私ははんだ付けはあまりしないのでヘタクソで不安だったので、
WEBで調べたが簡単なので説明すらされていなかった。
案の定、液晶を基盤に接続するときに隣合ったピンがくっついてしまった。
くっついたところは半田をあたためながら楊枝でなんとか切り離した。
piはzeroを使った。
まず、raspi-configで
5 Interfacing Options
P5 I2C を選んでenableにする。
i2cdetectというコマンドで認識しているか確認するのだが
インストールされていなかったので
sudo apt-get install i2c-tools
はんだ付けしたソケットをpiのGPIOに挿す。
GPIOの1,3,5,7,9,11 を使う。
SDカードがある側を上にして、左の列の上から6本だ。
ちなみに基盤の各ピンに対応する箇所には以下のように書かれている
1: 3V3
3: SDA
5: SCL
7: LED
9: GND
11: RST
sudo i2cdetect -y 1
以下のような内容であれば正常だそうだ。
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- 3e --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
これで使用できる状態なので早速なにか表示したいが、
WEBを探すとスクリプトが紹介されていたので、
IPアドレスとか任意の文字列を表示させてみた。
スクリプトではコマンド実行結果を加工したり任意の文字列をコマンドにわたせる型に変換したりしているのだが、
コマンドそのものの使い方を調べてみた。
Usage: i2cset [-f] [-y] [-m MASK] [-r] I2CBUS CHIP-ADDRESS DATA-ADDRESS [VALUE] ... [MODE]
I2CBUS is an integer or an I2C bus name
ADDRESS is an integer (0x03 - 0x77)
MODE is one of:
c (byte, no value)
b (byte data, default)
w (word data)
i (I2C block data)
s (SMBus block data)
Append p for SMBus PEC
まず初期化する。
以下2行がお決まりの初期化コマンドのようだ。
sudo i2cset -y 1 0x3e 0 0x38 0x39 0x14 0x70 0x56 0x6c i
sudo i2cset -y 1 0x3e 0 0x38 0x0d 0x01 i
0x3e というのが書き込み対象(I2CBUS)、i2cdetectで表示されていた値だ。
i は「block data」、連続してデータを書き込む指定である。
文字コードは下記に記載がある。
http://akizukidenshi.com/download/ds/xiamen/AQM0802.pdf
#全部消して1行目の最初にカーソル移動
sudo i2cset -y 1 0x3e 0 0x38 0x0d 0x01 i
#指定したデータを連続して表示
sudo i2cset -y 1 0x3e 0x40 [data1] [data2] [data3] i
#改行してカーソルを先頭に移動
sudo i2cset -y 1 0x3e 0x00 0xc0 i
8文字入力したらコマンドで改行しないと折り返さない。
#「Hello」と表示
800何十円だった。
I2C液晶は AQM0802Aというもので8文字 x 2列表示できる。
それをラズパイに接続させるための変換基盤(PCA9515)と、ピンヘッダにさすためのソケットがついていて、液晶とソケットをはんだ付けする。
私ははんだ付けはあまりしないのでヘタクソで不安だったので、
WEBで調べたが簡単なので説明すらされていなかった。
案の定、液晶を基盤に接続するときに隣合ったピンがくっついてしまった。
くっついたところは半田をあたためながら楊枝でなんとか切り離した。
piはzeroを使った。
まず、raspi-configで
5 Interfacing Options
P5 I2C を選んでenableにする。
i2cdetectというコマンドで認識しているか確認するのだが
インストールされていなかったので
sudo apt-get install i2c-tools
はんだ付けしたソケットをpiのGPIOに挿す。
GPIOの1,3,5,7,9,11 を使う。
SDカードがある側を上にして、左の列の上から6本だ。
ちなみに基盤の各ピンに対応する箇所には以下のように書かれている
1: 3V3
3: SDA
5: SCL
7: LED
9: GND
11: RST
sudo i2cdetect -y 1
以下のような内容であれば正常だそうだ。
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- 3e --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
これで使用できる状態なので早速なにか表示したいが、
WEBを探すとスクリプトが紹介されていたので、
IPアドレスとか任意の文字列を表示させてみた。
スクリプトではコマンド実行結果を加工したり任意の文字列をコマンドにわたせる型に変換したりしているのだが、
コマンドそのものの使い方を調べてみた。
Usage: i2cset [-f] [-y] [-m MASK] [-r] I2CBUS CHIP-ADDRESS DATA-ADDRESS [VALUE] ... [MODE]
I2CBUS is an integer or an I2C bus name
ADDRESS is an integer (0x03 - 0x77)
MODE is one of:
c (byte, no value)
b (byte data, default)
w (word data)
i (I2C block data)
s (SMBus block data)
Append p for SMBus PEC
まず初期化する。
以下2行がお決まりの初期化コマンドのようだ。
sudo i2cset -y 1 0x3e 0 0x38 0x39 0x14 0x70 0x56 0x6c i
sudo i2cset -y 1 0x3e 0 0x38 0x0d 0x01 i
0x3e というのが書き込み対象(I2CBUS)、i2cdetectで表示されていた値だ。
i は「block data」、連続してデータを書き込む指定である。
文字コードは下記に記載がある。
http://akizukidenshi.com/download/ds/xiamen/AQM0802.pdf
#全部消して1行目の最初にカーソル移動
sudo i2cset -y 1 0x3e 0 0x38 0x0d 0x01 i
#指定したデータを連続して表示
sudo i2cset -y 1 0x3e 0x40 [data1] [data2] [data3] i
#改行してカーソルを先頭に移動
sudo i2cset -y 1 0x3e 0x00 0xc0 i
8文字入力したらコマンドで改行しないと折り返さない。
#「Hello」と表示
sudo i2cset -y 1 0x3e 0x40 0x48 0x65 0x6c 0x6c 0x6f i
#「トウキョウ」と表示
sudo i2cset -y 1 0x3e 0x40 0xc4 0xb3 0xb7 0xae 0xb3 i

