ESP8266にキャラクタ液晶はちゃんとつながりましたので、今度は先日使ったカラーTFT LCD(aitendo M-Z18SPI-2P)をつないでみました。
環境自体はArduinoですので接続だけで済むかも、と期待したのですが、残念ながらこれに使用するライブラリ(Adafruit_ST7735)はそのままではコンパイルできませんでした。
しかし、幸いなことに既にこのライブラリをESP8266にポーティングしている方がいました。
lcd: add support for the ESP8266. · nzmichaelh/Adafruit-ST7735-Library@999f5ff
この修正は他の修正と競合するらしく、現時点ではまだ本体へ統合されていません。
使ってみるには、以下からこの修正済みライブラリをダウンロードします。
nzmichaelh/Adafruit-ST7735-Library
なお、オリジナルと同様、このライブラリはM-Z18SPI-2Pでは画面にゴミが残りますので、以前に書いた修正をこのライブラリに対して行います。
Arduino(9) Adafruit_ST7735ライブラリの修正(aitendoの1.8型LCD用): 楽しくやろう。
このライブラリを使って、付属のスケッチ例「graphicstest」を動かしてみました。
結線は以下のようになります。
例によって、この図はプログラム書き込み等に必要な共通部分は省略しています。
省略部分はこちらを参照してください。
信号同士の接続は以下のようになっています。
LCD / ESP8266 RST / IO5 A0 / IO4 SDA / IO13 SCK / IO14 CS / IO15
graphicstestスケッチのソースコードも、この結線を反映するように変更します。
また、画面にゴミが残らない修正を使うため、LCDの種別はBLUETABに変更します。
赤字が変更部分です。
IO13とIO14はデフォルトの結線ですので、記述しなければSDAとSCKに接続されたものとして扱われます。
デフォルトの結線については別記事で紹介しました。
// For the breakout, you can use any 2 or 3 pins // These pins will also work for the 1.8" TFT shield #define TFT_CS 15 #define TFT_RST 5 // you can also connect this to the Arduino reset // in which case, set this #define pin to 0! #define TFT_DC 4 // Option 1 (recommended): must use the hardware SPI pins // (for UNO thats sclk = 13 and sid = 11) and pin 10 must be // an output. This is much faster - also required if you want // to use the microSD card (see the image drawing example) Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST); // Option 2: use any pins but a little slower! #define TFT_SCLK 13 // set these to be whatever pins you like! #define TFT_MOSI 11 // set these to be whatever pins you like! //Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST); (中略) void setup(void) { Serial.begin(9600); Serial.print("Hello! ST7735 TFT Test"); // SPI.setClockDivider(SPI_CLOCK_DIV128); // Use this initializer if you're using a 1.8" TFT tft.initR(INITR_BLUETAB); // initialize a ST7735S chip, black tab
動作の様子です。
クロックがArduino Pro Mini(3.3v)の10倍ありますので、描画が比べ物にならないほど高速です。
コメント