赤い基板の 320x240 dot の TFT 液晶モジュール。
写真は 2.2インチと 2.8インチのもの。とても良く似ている。これを含め、2.2インチ、2.4インチ、2.8インチ、3.2インチのバリエーションがある。
http://www.lcdwiki.com/Main_Page#SPI_Display
4つとも ILI9341 がコントローラ。 Adafruit ILI9341 ライブラリで動かしてみた。
環境
- Ubuntu18.04
- Arduino 1.8.10
- ESP32
ライブラリインストール
「ツール」-「ライブラリを管理...」でライブラリマネージャを呼び出し、「Adafruit ILI9341」を検索してインストール
サンプルプログラム
「ファイル」-「スケッチ例」-「カスタムライブラリのスケッチ例」-「Adafruit ILI9341」-「graphicstest」
を呼び出す
接続
ILI9341 | ESP32 |
---|---|
VCC | 3.3V |
GND | GND |
CS | GPIO5 |
RESET | 16 |
D/C | 17 |
SD(MOSI) | 23 |
SCK | 18 |
LED | 3V3 |
SDO(MISO) | 19 |
T_CLK | (N.C.) |
T_CS | (N.C.) |
T_DIN | (N.C.) |
T_OUT | (N.C.) |
T_IRQ | (N.C.) |
設定
- D/C 17
- SD(MOSI) 23
- RESET 16
以下の箇所を探して
// For the Adafruit shield, these are the default.
#define TFT_DC 9
#define TFT_CS 10
// Use hardware SPI (on Uno, #13, #12, #11) and the above for CS/DC
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
以下のように書き換える。
// For the Adafruit shield, these are the default.
#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);
これで動いた。
(2021/01/30 追記)
バックライトLCDのON/OFFをコントロールする場合はLEDピンをGPIOに接続する。例えばGPIO4に接続したときは
#define TFT_BACKLIGHT_PIN 4
としておいて、適宜
pinMode(TFT_BACKLIGHT_PIN,OUTPUT);
digitalWrite(TFT_BACKLIGHT_PIN,HIGH);
とする。
ピン解説
ILI9341は動作モードが沢山あるが、
4-wire 8-bit data serial interface Ⅱ
を使っているのかな?
cf., a-Si TFT LCD Single Chip Driver
240RGBx320 Resolution and 262K color ILI9341
Page 24 of 239
6. Block Function Description
MCU System Interface
その場合、使用信号線は SCL,SDI,D/CX,SDO, CSX の5つとなる。更にLCDのPowerOn時にRESET信号が必要なので、6線になりますね。
ILI9341 | |
---|---|
VCC | 3.3V |
GND | GND |
CS | (CSX) Cable Select |
RESET | リセット信号送出用 |
D/C | (D/CX) データ・コマンドコントロール用 |
SD(MOSI) | (ILI9341側から見てSDI) SPI MOSI |
SCK | (SCL) SPIクロック |
LED | バックライトON/OFF信号 モジュール内部でスイッチ用トランジスタにつながっているのでこれがLED電源というわけではない |
SDO(MISO) | (ILI9341側から見てSDO) SPI MISO LCDデータリード用(使用しない) |