SPI接続だけでなくパラレル接続のTFTディスプレイモジュールも使ってみたいと、ア〇ゾ〇でポチってしまいました。
3.95 インチ TFT LCD ディスプレイ
ILI9488 480x320 スタイラス付きタッチ ディスプレイ モジュール
16ビット(実は8bit) パラレル バス、低消費電力、開発ボード用
ASHATA
あまり見聞きしたことのないブランドです。「16ビットパラレル」となってますが、写真では8ビットのピン配でしたのでエイヤっと購入、直ぐ届きました。(今現在は届くのに約一か月待ち、でも少しお安くなってる?;∀;)
Arduino UNO用シールドになっているのでまずUNOで動くか確認(最終的にはESP32でタッチパネル機能も使いたいのです。)さて使えるのか?ネットの情報も少なく、少し悩みました。見つけました!
「Examples → GFX Library for Arduino → HelloWorldGfxfont」
の中に記載してあるURL
に跳び、そこのパラレルインターフェースの設定でやってみたところ画面が表示されました。ただ、フリーフォントのせいか画面が左右反転のように見えここで悩みました。フリーフォントはやめてシンプルにしたところ理解できる画面表示になりました。それが冒頭の写真でコードは以下になります。
// 3.95" TFT LCD Shield Test on UNO
#include <Arduino_GFX_Library.h>
Arduino_DataBus *bus = new Arduino_SWPAR8(A2, A3, A1, A0, 8, 9, 2, 3, 4, 5, 6, 7);
//(TFT_DC, TFT_CS, 25 /* WR */, 32 /* RD */, 23 /* D0 */, 19 /* D1 */,
// 18 /* D2 */, 26 /* D3 */, 21 /* D4 */, 4 /* D5 */, 0 /* D6 */, 2 /* D7 */);
Arduino_GFX *gfx = new Arduino_ILI9488(bus, A4 /*DF_GFX_RST*/, 0 /* rotation */, false /* IPS */);
void setup(void) {
Serial.begin(115200);
Serial.println("Arduino_GFX Hello World Gfxfont example");
// Init Display
if (!gfx->begin()) Serial.println("gfx->begin() failed!");
gfx->fillScreen(BLACK);
gfx->setRotation(0);
gfx->drawRect(0, 0, gfx->width(), gfx->height(), CYAN);
gfx->setCursor(gfx->width() - 76, 0);
gfx->setTextColor(RED);
gfx->println("Hello World!");
gfx->setCursor(gfx->width() - 76, gfx->height() - 8);
gfx->setTextColor(WHITE);
gfx->println("Hello World!");
delay(2000); // 5 seconds
}
int x, y = 0, r = 0;
void loop() {
y = y % gfx->height();
uint8_t size = random(1, 5);
gfx->setCursor(size * 10, y);
gfx->setTextColor(random(0xffff));
gfx->setTextSize(size);
y += 10 * size;
if (y > gfx->height() - 10) {
y = 0;
gfx->fillScreen(BLACK);
r++;
if (r > 3) r = 0;
gfx->setTextSize(1);
gfx->setRotation(r);
gfx->drawRect(0, 0, gfx->width(), gfx->height(), CYAN);
gfx->setCursor(gfx->width() - 76, 0);
gfx->setTextColor(RED);
gfx->println("Hello World!");
gfx->setCursor(gfx->width() - 76, gfx->height() - 8);
gfx->setTextColor(WHITE);
gfx->println("Hello World!");
} else {
gfx->println("abcde!");
}
delay(500); // 1 second
}
とりあえず不要な部分はカットしてあります。次回はいよいよESP32への移植ができるか?
最後まで見ていただきありがとうございました。