Arduino (17) TFT LCD2017年05月05日

1 年ぶりに電子工作を試みた。
GW の連休を利用して、新たな Arduino Shield をつくる。
今回は、タッチ・スクリーンがついた TFT 液晶ディスプレイをつないでみた。
いつものように、Adafruit の製品を参考にしたいのだが、そこに使われているのと同じパーツを手に入れることはできなかった。
幸いなことに、コントローラ・チップが同じで SPI 接続が可能なものが aitendo で見つかった (SX032QVGA008)。
TFT は 3.3V で動作するので、3.3V に改造した我が Duemilanove 1284p では、ピンとピンが直結できる (通常の 5V 版なら、電圧レベル変換のチップが必要になる)。
タッチ・スクリーンは、Adafruit のシールドではコントローラ・チップを使われているが、入手できなかったので、そのままアナログ入力につないで、ソフトウェア制御する予定だ。
micro SD I/F を組み込んで、ハードウェアは 1 日 (半日 x 2) ほどで完成した (ボードの加工に思いのほか時間を要した)。

Shield-5

TFT への表示は、Adafruit のライブラリ (Adafruit_ILI9341) とスケッチ (graphicstest) がほとんどそのまま使える (ピンの割り当てを変更したくらいだ)。

graphicstest

以前つくった「漢字表示テスト」のスケッチを実行してみる。

漢字表示テスト

ピンの割り当てをこれまで作ったシールドと共通にしているので、ライブラリを差し替えるだけで、そのまま動く (フォントを micro SD から読み込むようにしているので、micro SD I/F の動作確認にもなる)。
以前の LCD に比べると、縦横が 2 倍になっているので、文字列がすべて表示されるようになった。
タッチ・スクリーンについては、タッチ位置を analogRead() でトレースできることを確認した (Serial モニタ表示)。
GUI とタッチ・スクリーンによる制御を行うためには、xy 座標への変換 (キャリブレーション) が必要だ。
また迷い道に踏み込んでしまったようだ。