はじめに
SPI接続のILI9341のLCDが欲しくてこれを買ったがSPIではなく届いてみると8ビットパラレルのモジュールだったので絶望した。
きっとポチッとしたときは眠たかったんだと思う。
しかし買ってしまったものは仕方ないので動かしてみることにした。
PlatformIOのインストール
pipでインストールできる。
$ pip3 install platformio --user
ライブラリ
2.4 TFT LCD Shieldを駆動するためのライブラリはAdafruit-TFT-LCDを使う。
ライブラリのインストールはpio lib install
で行う。依存関係もこのコマンドで解決される。
環境構築
ベース環境の構築
PlatformIOで環境を構築する。ライブラリのインストールもここで行う。
$ mkdir uno_r3 $ cd uno_r3 $ pio init -b uno $ pio lib install "adafruit/Adafruit-TFT-LCD"
platformio.iniの修正
依存関係を追加しないとビルドが失敗するので、下記のようにする。
[env:uno] platform = atmelavr board = uno framework = arduino lib_deps = adafruit/Adafruit-TFT-LCD@0.0.0-alpha+sha.9b701b6d5a adafruit/Adafruit BusIO Wire SPI
サンプルソースのコピー
graphicstest
のサンプルをビルドするためソースをsrc
ディレクトリにコピーする。
$ cp .pio/libdeps/uno/Adafruit-TFT-LCD/examples/graphicstest/graphicstest.ino ./src
修正
このシールドはパチモンなので、チップのデバイスIDチェックの結果が残念なことになる。
そのため、IDを0x9341(ILI9341)
に固定する必要がある。
--- graphicstest.ino~ 2020-10-16 09:23:26.419496756 +0900 +++ graphicstest.ino 2020-10-16 09:28:54.187508970 +0900 @@ -57,7 +57,7 @@ void setup(void) { tft.reset(); - uint16_t identifier = tft.readID(); + uint16_t identifier = 0x9341; if(identifier == 0x9325) { Serial.println(F("Found ILI9325 LCD driver"));
ビルドおよび書き込み
次のコマンドでビルドする。
$ pio run
ターゲットへの書き込みは次のようにする。
$ pio run -t upload
まとめ
ILI9341(8ビットパラレル)のLCD ShieldをArduino UNOで試してみた。
パチモンのため、デバイスIDのチェックが機能しないためIDを固定する必要があるので注意。
それ以外は問題なく動いているようだ。