Raspberry Piでインターネットラジオを作る #6
RPLCDの導入
HD44780の初期設定を調べている時に、Arduinoには LiquidCrystal という便利そうなライブラリがあることを知りました。これいいな~と思っていたら、 似たような感じの、RPLCDというRaspberry Pi用ライブラリがあるではありませんか。
Readmeにはこう書いてありました。
This library is inspired by Adafruit Industries' CharLCD library as well as by Arduino's LiquidCrystal library.
じゃあちょっとこれを入れてみることにします。
RPLCDのインストール
手動で設置してもいいですが、RPLCDはpipでインストールすることができます。
pipのインストール方法
※python-devを使うので、無い場合はインストールします
$ sudo apt-get install python-dev $ sudo apt-get install python-pipアップグレードします
$ sudo pip install --upgrade pipターミナルを再起動して、バージョン確認
pip --versionヘルプ
pip help
pipの準備ができたら、RPLCDをインストールします。
$sudo pip install RPLCD
これでOKです。
Raspberry PiのGPIOとLCDの結線
GPIOとLCDの結線がまだならば、RPLCDの初期設定通りに結線しておけばひと手間省けます。すでに結線してある場合は、初期設定でピンの設定をするのでここは飛ばして構いません。
結線の初期設定は下記の通りです。
(注意:数字は、BOARDモードの番号です)
RS: 15
RW: 18(GNDに落とす方法は後述)
E: 16
Data 4-7: 21, 22, 23, 24
RPLCDの初期設定
初期設定は、使用するプログラム内に書きます。
こんな感じで、CharLCDのインスタンス生成時に設定します。
import RPi.GPIO as GPIO from RPLCD import CharLCD lcd = CharLCD(pin_rs=15, pin_rw=18, pin_e=16, pins_data=[21, 22, 23, 24], numbering_mode=GPIO.BOARD, cols=20, rows=4, dotsize=8)
numbering_mode :GPIOピンの指定モード
順序が前後しますが、まずはここを設定
BOARDで設定する場合: numbering_mode=GPIO.BOARD
BCMで設定する場合: numbering_mode=GPIO.BCM
pin_rs, pin_rw, pin_e, pins_data :LCD端子の接続設定
GPIOとLCD端子の対応をそれぞれ設定します。
(ピン番号は、GPIOピンの指定方法で設定した番号で書きます)
pin_rs = RS
pin_rw = RW
pin_e = E
pins_data = [DB4, DB5, DB6, DB7]
※RWをGNDに落としている場合、pin_rw=None とします。
※8bitで使う場合、pins_data = [DB0, DB1, DB2, DB3, DB4, DB5, DB6, DB7]
rows: LCDの行数(通常は1,2,4)
cols: LCDの文字数(通常は16,20)
dotsize: ドットサイズ(通常は8、10が使えるLCDならば10も可)
16文字X2行 の場合 : cols=16, rows=2, dotsize=8
20文字X4行 の場合 : cols=20, rows=4, dotsize=8
【具体例】
16文字×2行のLCDを下記のように接続した場合、
RS --- GPIO7
RW --- GND
E --- GPIO8
DB4 --- GPIO25
DB5 --- GPIO24
DB6 --- GPIO23
DB7 --- GPIO18
初期設定はこうなります↓
pin_rs=7
pin_rw=None
pin_e=8
pins_data=[25, 24, 23, 18]
numbering_mode=GPIO.BCM
cols=16
rows=2
dotsize=8
RPLCDの初期設定(番外)
いちいちプログラムに初期設定を書くのが面倒な場合、RPLCD本体にある設定を書き換えてしまえばOKみたいです。LCDをとっかえひっかえしなければ、こちらのほうが楽です。
lcd.pyを開き、128行目あたりにある class CharLCD(object):の初期値を書き換えればOK。実行するプログラム側に初期設定を書けば、ここは上書きされます。
※lcd.pyは、うちの環境ではここにあります。
/usr/local/lib/python2.7/dist-packages/RPLCD/lcd.py
テスト
ちょっくらテストしてみます
※ここでは、RPi.GPIOはlcd.pyから読んでいるのでimportしなくても大丈夫です
from RPLCD import CharLCD lcd = CharLCD() lcd.write_string('Hello world!')
楽ちんです!
さらに、テストスクリプトがあるので実行してみます。
16×2用のテストスクリプト
https://raw.githubusercontent.com/dbrgn/RPLCD/master/test_16x2.py
うまく動くと、LCDにデモ画面が表示されます。文字やカーソルの位置が期待通りの場所に表示されているかなどのチェックができます。
これでLCDの表示は問題なさそうです。
Raspberry Pi Zero - ラズベリー・パイ ゼロ
- 発売日: 2015/11/26
- メディア: Personal Computers