2.8インチTFTディスプレイ
2.8インチSPI接続 240×320ドットのもので、
ebayで入手しました。
ILI9341というメジャーなコントローラチップが使われています。タッチパネルも付いてますが、今回は使いません。3.3V電源で動作させるときは、裏面J1をショートして3.3Vレギュレータ(
XC6206)をスルーにします。
Adafruitのソフトウエア設定
- ラズパイとLCDの結線は、Adafruit のデフォルトでは次の通りです。(括弧内は今回の基板での結線)事前にラズパイのSPIを有効にしておきます。
Raspberry Pi SCLK (SPI0 SCLK) to TFT CLK. (SCK)
Raspberry Pi MOSI (SPI0 MOSI) to TFT MOSI.(MOSI)
Raspberry Pi CE0 (GPIO 8/SPI0_CE1) to TFT CS.(CS)
Raspberry Pi GPIO 18 (GPIO 25) to TFT D/C.
Raspberry Pi GPIO 23 (GPIO 7) to TFT RST.
- ソフトウエアをインストールします。元記事では python-imagingが指定されていましたが、python-pilに読み替えました。PIL(Python Imaging Library)はPython 3未対応のうえ2011年を最後に開発が止まっているため、後継のPillowをインストールしようとしましたがexceptionが出てうまく入らなかったので、やむなくPILで続けます。
$ sudo apt-get update
$ sudo apt-get install build-essential python-dev python-smbus python-pip python-pil python-numpy git
$ sudo pip install RPi.GPIO
$ cd ~
$ git clone https://github.com/adafruit/Adafruit_Python_ILI9341.git
$ cd Adafruit_Python_ILI9341
$ sudo python setup.py install
動作確認
- ~/Adafruit_Python_ILI9341/examples にサンプルが入っています。
- まずはimage.pyです。エディタでピンアサインを変更します。変更箇所は次の通りです。他のサンプルも同様に修正します。
# Raspberry Pi configuration.
DC = 25
RST = 7
SPI_PORT = 0
SPI_DEVICE = 0
- image.pyを動作させると、猫の写真が描画されます。
$ sudo python image.py
- image_timed.py は、猫の写真を連続描画させて所要時間を測るベンチマークみたいな物です。概ね6fps程度、JPEGデコードしてシリアルのSPI接続でデータを送るならこんなものなんですかね。
- shapes.pyを動作させると、Pythonスクリプトで設定した図形や文字が表示されます。しかし文字が小さすぎです。デフォルトフォントは8px固定で高さは1.2ミリ程度。
$ sudo python shapes.py
- この機能を使って、ラジオの表示パネルっぽいものを作ってみます。まずは文字を大きくしたいところ。スクリプトにフォントの変更方法が書かれています。使用できるフォントの一覧は次のコマンドで取得できます。
$ fc-list
- インストール済みのフォントから、TrueTypeフォントのDejavu Sansを試します。フォント名あるいはフォントをフルパスで指定できます。
font = ImageFont.truetype('DejaVuSans.ttf',16)
font = ImageFont.truetype('/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf',24)
- ラジオのディスプレイっぽい雰囲気にしてみました。スイッチを押してもまったく動かないハッタリですけど、完成した感が出ます。文字の位置や大きさを調整していたところ、面倒なことに気がつきました。どうやらTFTパネルは縦長画面がデフォルトで、横長表示するには回転させる必要があるようです。だから、この文字はソフトウエアで90度回転させて描画しています。
0 件のコメント:
コメントを投稿