SPI TFT用テキスト表示ツール


さすがに128x128の解像度ではグラフ表示は厳しいので、引数の指定で任意の文字を表示するツールを作りました。
左から
2.2 inch SPI 240x320 ILI9340
1.44 inch SPI 128x128 ILI9163C
1.8 inch SPI 128x160 ST7735



Raspberryとの結線は以下の様になります。
SPI TFT Rpi(Pin#)
SDI/MISO(※1) N/C
LED 3.3V(※2)
SCK SCLK(23)
SDO/MOSI MOSI(19)
RS/DC/A0(※3) GPIO2(03)(※4)
RESET GPIO3(05)(※4)
CS CS0(24)(※5)
GND GND
VCC 3.3V

(※1)TFTによってはこのピンは有りません。
(※2)バックライトが明るすぎるときは100Ω程度の抵抗を挟んで下さい
(※3)モジュールによってRS/DC/D_C/A0などと表記されています。
(※4)好きなピンに変更可能です。
ピンのアサインはspi.confに定義します。
(※5)CSはチャネル番号とピン番号(GPIOの番号)の両方を定義します。
RpiではCE0/CE1を選べます。
OpiではCE0のみ選べますが、モデルによりピン番号が変わります。
・Rpi CH=0 CS=8 or CH=1 CS=7
・Opi CH=0 CS=8
・OpiZERO CH=1 CS=8

ソースはこちらで 公開しています。
BCM2835ライブラリを使う場合、インストールは以下の手順です。
wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.42.tar.gz
tar zxvf bcm2835-1.42.tar.gz
cd bcm2835-1.42
./configure
make
sudo make check
sudo make install

git clone https://github.com/nopnop2002/wiringpi-tft-tool
cd wiringpi-tft-tool
cc -o tft tft.c fontx.c spilib.c -lbcm2835 -lm -DSPI -DBCM

多少表示が遅くなりますが、WiringPiライブラリでも動きます。
WiringPiライブラリを使う場合、インストールは以下の手順です。
git clone https://github.com/nopnop2002/wiringpi-tft-tool
cd wiringpi-tft-tool
cc -o tft tft.c fontx.c spilib.c -lwiringPi -lm -DSPI -DWPI

日本語のフォントファイルは、FONTX形式のファイルを使っています。
実行時の引数の指定は以下の通りです。
全てのコマンドは[tft s]コマンドで反映されます。
tft +n 文字列 n行目に表示する文字の指定
tft -n n行目の文字を削除
tft Fn n行目の文字の表示色を指定
tft Bn n行目の文字の背景色を指定
tft B0 全体の背景色を指定(デフォルトは白)
tft +Un n行目にアンダーラインを追加
tft -Un n行目のアンダーラインを削除
tft +L 1行分スクロールアップ
tft -L 1行分スクロールダウン
tft Pn c n行目の表示開始位置をc文字目に設定
tft 16 全体を16ドットフォントで表示(デフォルト)
tft 24 全体を24ドットフォントで表示
tft 32 全体を32ドットフォントで表示
tft R0 文字を回転なしで表示(デフォルト)
tft R90 文字を90度回転して表示
tft R180 文字を180度回転して表示
tft R270 文字を270度回転して表示
tft r 全ての文字を削除、全ての色、反転、表示開始位置を解除
tft s 表示を反映
tft M コンパイルされているモデル情報とTFT解像度を表示
tft P 使用しているピンアサインを表示




回転を指定すると以下の様になります。


写真のTFTは全て解像度が違います。
TFTの解像度は「tft.conf」に設定します。


WiringPiライブラリでビルドすると、OrangePiでも使うことができます。
左からRaspberry Pi(モデルB)、OrangePi PC、Orange Pi Lite


続く...