概要
- AdafruitのPythonライブラリを使って、1602で知られる、16x2桁のキャラクタLCDに文字を表示。
https://github.com/adafruit/Adafruit_Python_CharLCD - I2C接続のやつじゃないよ
- ラズパイでGPIOとして使えるピンなら、どれにつないでもOK.
環境
- Raspberry Pi 2
2017-04-10-raspbian-jessie
-
sudo apt-get update && sudo apt-get upgrade
して、
Linux raspberrypi 4.9.24-v7+ #993 SMP Wed Apr 26 18:01:23 BST 2017 armv7l GNU/Linux
手順
接続
LCD Pin : Raspberry Piのピン
1 VSS * GND
2 VDD * 5.0V
3 V0 * (10KΩの可変抵抗の真ん中のピンへ。可変抵抗の両端は5.0VとGND)
4 RS : GPIO22 (15番Pin)
5 RW : GND (H=Read/L=Write なので、Write Only)
6 E : GPIO26 (37番Pin)
7 D0 - NC 使わない
8 D1 - NC 使わない
9 D2 - NC 使わない
10 D3 - NC 使わない
11 D4 : GPIO5 (29番Pin)
12 D5 : GPIO6 (31番Pin)
13 D6 : GPIO13 (33番Pin)
14 D7 : GPIO19 (35番Pin)
15 A * 5.0V
16 K * GND
- ラズパイに、電源を接続しない。
- 5.0V、GND、可変抵抗を**慎重に**配線する。
- よ~く、確認する。
- SDカードを抜いたラズパイに電源を挿して、5.0V供給してみる。
- LCDのバックライトが点いて、可変低をまわすと、コントラストが変わる。
- 電源入れると、上の段に ■が表示されてて、下は、何も表示されてない
- 電源を抜いて、のこりの配線をする。
- ラズパイに、SDカードを挿して、電源を入れなおして、起動する。
ライブラリのインストール
sudo apt-get update
sudo apt-get install -y build-essential python-dev python-smbus python-pip git
sudo pip install RPi.GPIO
#
cd $HOME
# ぎっと、くろ~ん.
git clone https://github.com/adafruit/Adafruit_Python_CharLCD.git
#
cd Adafruit_Python_CharLCD
# インストール
sudo python setup.py install
軽く使ってみる
-
python
[Enter]で、Python起動 -
コード、こぴぺ
コイツをインポートする。
import Adafruit_CharLCD as LCD
ピンの設定. GPIO番号を入れる
lcd_rs = 22
lcd_en = 26
lcd_d4 = 5
lcd_d5 = 6
lcd_d6 = 13
lcd_d7 = 19
16x2桁.
lcd_columns = 16
lcd_rows = 2
lcd = LCD.Adafruit_CharLCD(lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7,
lcd_columns, lcd_rows)
液晶クリア.
lcd.clear()
メッセージ表示.
lcd.message('Hello World!16x2\nQiita.com/mt08/')
カーソル表示して、ブリンク
lcd.blink(True)
3. `Ctrl-D` で抜ける
## その他
- `Adafruit_Python_CharLCD/examples/char_lcd.py` を実行する場合、テキストエディタで開いて、ピンの設定をうまいのに変更すること。
- 5V入れてるけど、GPIO大丈夫なの??<br> ... たぶん。。。 RWピンをGNDにして、ラズパイからみて書き込み専用になってるので、LCD側から出力されないよね...
- [`Adafruit_CharLCD/Adafruit_CharLCD.py`](https://github.com/adafruit/Adafruit_Python_CharLCD/blob/master/Adafruit_CharLCD/Adafruit_CharLCD.py) を見れば、使えそうなコマンドがわかるかと...`def`で、定義してるよね?
- WiringPiのとこ(http://wiringpi.com/dev-lib/lcd-library/)みると、Cでサポートしてる?っぽい
### 実行例
```py
pi@raspberrypi:~ $ python
Python 2.7.9 (default, Sep 17 2016, 20:26:04)
[GCC 4.9.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> # コイツをインポートする。
... import Adafruit_CharLCD as LCD
>>> # ピンの設定. GPIO番号を入れる
... lcd_rs = 22
>>> lcd_en = 26
>>> lcd_d4 = 5
>>> lcd_d5 = 6
>>> lcd_d6 = 13
>>> lcd_d7 = 19
>>> #
... # 16x2桁.
... lcd_columns = 16
>>> lcd_rows = 2
>>> #
... #
... lcd = LCD.Adafruit_CharLCD(lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7,
... lcd_columns, lcd_rows)
>>> # 液晶クリア.
... lcd.clear()
>>> # メッセージ表示.
... lcd.message('Hello World!16x2\nQiita.com/mt08/')
>>> # カーソル表示して、ブリンク
... lcd.blink(True)
>>>
pi@raspberrypi:~ $