1.77インチTFT液晶「Arduino LCD Screen」(160×128,ST7735,SPI)をArduino Esploraに繋いで動かしてみた。
いまさら感があるのだが、積んでいた部品をストックしている箱をあさっていたら出て来たので一度くらいは動かしてみることにした。
Arduino EsploraというのはArduino Leonardo互換でゲーム機風にスティックとボタン、スピーカーが付いていて、液晶も取り付け可能なマイコン基板キットだ。
この液晶はArduino純正の製品で、「Arduino LCD Screen」という品物だ。ただし、もう廃盤らしい。
→ Arduino LCD Screen
→ Arduino TFT LCD Screen – スイッチサイエンス
基板の裏側を見ると、BOARD MODEL ROBOT LCDとシルク印刷されている。 Arduino Robotにも使われる液晶基板モジュールということらしい。
microSDカードソケットがあり、SPIバスでつながっている。
Arduinoマイコンボードは5Vで動作しているので、電圧変換用にICが基板上に載っている。
回路図は、GLCDという名前のものと同じ(?)
→ ArduinoGLCD_schematic – GLCD_sch.pdf
ただし、この回路図を見ても液晶パネルについては記述が十分にされていないので、液晶まわりで詳しいことは分からない。
液晶パネルについて分からなくても、Arduino IDEに最初からデフォルトでTFTライブラリ(TFT.h)が入っていて、それを使えば簡単に動かせる(はず)。
→ Arduino – TFTLibrary
しかし、ライブラリは入っているのだが、exampleのスケッチが入っていない。
ライブラリの置いてあるページや、他のネット上で見つかるサンプルコードは見つかるのだが、ライブラリとの互換性が保たれていないせいなのかビルドができなかった。
ライブラリ自体も、それを使うソースコードも、もうメンテナンスされてなくて整合も取れない状態なのだろうと思った。
—
2.4″液晶(SPI)を動かすためにILI9341用のソフトがあるので、試しにこれを書き込んでみたところ、正しくはないのだが描画がされた。コマンドがある程度は互換らしい。
向き、描画方向、原点位置、内部のフレームバッファのメモリの座標と実際の液晶の画素との対応とかがズレている。
—
ST7735Sという液晶ドライバICが使われているというのが分かったので、Arduino IDEからAdafruitのST77xx用ライブラリをインストールして動かしてみた。
exampleのgraphictestというスケッチを使った。
ST7735用のライブラリとST7789用のライブラリが一緒のソースコード内に記述がしてあり、どちらかをコメントアウトする形で片方を動かすようになっている。
初期化の関係の処理は、以下の部分をコメントアウトを解除して使った。
// For 1.44″ and 1.8″ TFT with ST7735 use:
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);
// Use this initializer if using a 1.8″ TFT screen:
tft.initR(INITR_BLACKTAB); // Init ST7735S chip, black tab
あと、Arduino Esploraに合わせてピン設定を変更した。
#define TFT_CS 7
#define TFT_RST 1
#define TFT_DC 0
結果、無事 描画ができた。