ESP32でTFTディスプレイの表示テストをします。
マイコンで利用されるTFTディスプレイには、2.2インチ,2.4インチ,2.8インチ,3.2インチなどがあり、240×320ドットでSPIインターフェースで制御され、コントローラーにはILI9341が使われています。
今回は、手持ちの2.2"のTFTを使います。Qiitaのこの記事などを参考にしてテストしました。
ESP32 DevKitCとTFTの接続は次のようにします。
ESP32 TFT
3V3 ------------------ Vcc
GND ------------------ GND
GPIO5(VSPI SS) ------ CS
GPIO16 ---------------- RESET
GPIO17 ---------------- DC/RS
GPIO23(VSPI MOSI) -- SDA(MOSI)
GPIO18(VSPI SCK) ---- SCK
3V3 --------------------- LED
GPIO19(VSPI MISO) --- DO(MISO) これは接続しなくとも動作します。
接続回路図です。
GitHubからAdafruit_ILI9341とAdafruit_GFXライブラリをダウンロードして、Arduino IDEライブラリに登録します。
Adafruit_ILI9341のexamplesの中のgraphicstest.inoの一部を次のように書き換えてコンパイル書き込みします。
#define TFT_RST 16
#define TFT_DC 17
#define TFT_CS 5
// Use hardware SPI (on Uno, #13, #12, #11) and the above for CS/DC
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC,TFT_RST);
グラフィックスのデモが表示され、最後に上の画面が表示され、90°ずつ回転します。
「Hello World!」と簡単なグラフィックスのスケッチを作りTFTに表示してみます。
------------------------------------------
* ESP32 ILI8341を使った2.2inch TFTディスプレイ表示テスト
* 2020.1.10
* JH7UBC Keiji Hata
*/
#include <Adafruit_GFX.h>
#include <Adafruit_ILI9341.h>
#define TFT_DC 17
#define TFT_CS 5
#define TFT_RST 16
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_RST);
void setup() {
tft.begin();
tft.setRotation(3);
tft.fillScreen(ILI9341_BLUE);
tft.setCursor(50, 50);
tft.setTextColor(ILI9341_YELLOW);
tft.setTextSize(3);
tft.println("Hello World!");
tft.drawRoundRect(40,40,225,40, 5,ILI9341_WHITE);
tft.fillCircle(100,150,50,ILI9341_RED);
tft.fillRect(170,100,100,100,ILI9341_GREEN);
}
void loop() {
}