初めに
Spresenseの公式サイトでもお勧めしているし、
3.2. Camera プレビュー画像を LCD に表示する
AIキットでも使われているのが、
ILI9431というLCD。
このLCDは安くてちょうどよいものなんだけど、サイズが、2.2インチ、2.4インチ,2.8インチとちょっと小さくって、テキストを表示するなどを行う場合は、もう自分には見えない…。
※ちなみにこのデバイス最近はすごく高くなってます…。1000円以下で買えた時あったのに…。
なので、同じシリーズでもうちょっと大きいLCDないかな~、
しかも、手軽に動かせるもの!って思って探しました。
用意するもの
SpresenseはMainボードと拡張ボード。
SPRESENSEメインボード[CXD5602PWBMAIN1]
https://www.switch-science.com/catalog/3900/
SPRESENSE拡張ボード[CXD5602PWBEXT1]
https://www.switch-science.com/products/3901
それとLCD。同じILIのシリーズのILI9488であれば、4インチの大きさまであるので、だいぶ大きいかなあと思ってこれを選択。
4 インチ TFT LCD ディスプレイ モジュール、カラー スクリーン モジュール、ILI9488
これをジャンパでつなぎます!
ブログ(元ネタ)
この記事は、以下のブログに過去に投稿したもののまとめです。
ILI9488について
同じILIのシリーズでもあるし、そうじゃなくても安いこの手のSPI接続のLCDってコントローラが一緒なことがほとんどなので、対して苦も無く、初期化だけちょっと変えれば動くでしょ、って感じで軽く考えていました。
で、実際に、ILI9488をみてみると、なんと、RGB888のみでRGB565に対応していない!
メモリもったいないけど仕方ないな~って思いながら、RGB888対応をすることにしました。
Arduino向けライブラリ
Spresenseの公式が提示しているArduinoのILI9431ライブラリを確認するとRGB888に対応していない!
まあ、そうだよね。
Adafruit は、ILI9488のデバイス売ってないし、ライブラリの目的は商品販売のためって書いてあるんで未対応だよねえ~。
なんで、この Adafruit のライブラリを RGB888 対応しました。
実は、これ、このライブラリのベースクラスの
こっちを直さなければいけなかったです。
とはいえ、修正量が多くなく、実際にAdafruit_SPITFTのメソッド
inline void writeFillRectPreclipped(int16_t x, int16_t y,int16_t w, int16_t h, uint16_t color);
が、inlineで実装されたたんだけど、これを、ILIのドライバ側でこのメソッドをオーバーライドすればよいというもの。
で、ILI9431のライブラリに、このメソッドのRGB888対応コードを入れたものが、ILI9488のドライバになります。
ってことで、これでILI9488のライブラリの準備ができました。
動作確認
実際に、以下のように動作できます!
ただし、どうもSPIクロックは、40,000,000 でなくって、20,000,000 が、限界だし画枠は、320x240 から、480x320なのでおおきくなったから、ちょっと動きがもっさりしてるかも…。