[SPI] 2.2 inch TFT ディスプレイ (ILI9341)
2.2 inch の TFT ディスプレイです。3.3V 動作なので注意が必要です。
購入
Amazon 等で購入できます (購入時価格: ¥968)。
パッケージには、
とあります。日本語訳すると、
2.2 インチ SPI シリアル モジュール
解像度: 320x240
|
といった所でしょうか。
小ネタ
- 裏面の U3 という空きランドには W25Q64 という SPI フラッシュメモリを取り付けられるようになっています。
- F_CS という端子はこの SPI フラッシュメモリ用の CS です。
- J1 ジャンパーを外すと VCC に 5V を接続できるようですが、SPI の信号レベルは 3.3V です。
See Also:
動作確認
5V 系の Arduino と接続するには、microSD カードの接続を行うのにも使ったロジックレベル変換モジュールが必要になります。
ご覧の通り、ちょっと面倒 (抵抗分圧でやろうとするとさらに面倒) な接続になるため、3.3V 系の Arduino と接続する事をオススメします。
以下は 3.3V 系ボードへ直結するためのピンアサインです。
1 VCC |
3V3 / VCC |
3V3 / VCC |
3V3 / VCC |
3V3 / VCC |
3V3 / VCC |
2 GND |
GND |
GND |
GND |
GND |
GND |
3 CS |
10 |
IO15 |
IO5 (VSPICS0) |
PA_4 |
16 |
4 RESET |
8 |
IO5 |
IO16 |
PA_3 |
12 |
5 DC |
9 |
IO4 |
IO17 |
PA_2 |
2 |
6 MOSI |
11 |
IO13 (MOSI) |
IO23 (VSPID) |
PA_7 (MOSI) |
15 (MOSI) |
7 SCK |
13 |
IO14 (SCK) |
IO18 (VSPICLK) |
PA_5 (SCK) |
13 (SCK) |
8 LED |
3V3 / VCC |
3V3 / VCC |
3V3 / VCC |
3V3 / VCC |
3V3 / VCC |
9 MISO |
12 |
IO12 (MISO) |
IO19 (VSPIQ) |
PA_6 (MISO) |
14 (MISO) |
Arduino UNO 互換機の中には 5V / 3.3V を切り替えられるものがあり、このタイプだとロジックレベル変換モジュールは不要です。
この TFT モジュールを使うのに必要なライブラリは以下の2つです。Arduino IDE の libraries フォルダにコピーしてください (zip で取得したのであれば [スケッチ | ライブラリをインクルード | .zip 形式のライブラリをインストール...] からでも OK)。
サンプルスケッチは graphicstest.ino ですが、このままではうまく動きませんので少し修正します。
// 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);
|
RESET の定義を追加してやります。
Arduino (UNO)
// For the Adafruit shield, these are the default.
#define TFT_RST 8 // 追加
#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, TFT_RST);
|
ESP-WROOM-02
// For the Adafruit shield, these are the default.
#define TFT_RST 5 // 追加
#define TFT_DC 4
#define TFT_CS 15
// 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);
|
ESP-WROOM-32
// 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);
|
STM32F103
// For the Adafruit shield, these are the default.
#define TFT_RST 3 // 追加
#define TFT_DC 2
#define TFT_CS 4
// 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);
|
micro:bit
// For the Adafruit shield, these are the default.
#define TFT_RST 12 // 追加
#define TFT_DC 2
#define TFT_CS 16
// 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);
|
micro:bit (nRF51) の場合には Adafruit_ILI9341.h も修正する必要があります。
...
#if defined(ARDUINO_STM32_FEATHER)
typedef volatile uint32 RwReg;
#endif
#if defined(ARDUINO_FEATHER52) || defined (ARDUINO_MAXIM) || defined (NRF51)
typedef volatile uint32_t RwReg;
#endif
...
#if defined (ARDUINO_STM32_FEATHER) || defined (ARDUINO_MAXIM) || defined (NRF51) // doesnt work on wiced feather
#undef USE_FAST_PINIO
#elif defined (__AVR__) || defined(TEENSYDUINO) || defined(ESP8266) || defined (ESP32) || defined(__arm__)
#define USE_FAST_PINIO
#endif
...
|
上記コードの直下でコメントアウトしてある "引数を 6 個取るコンストラクタ" の書き方だとソフトウェア SPI になってしまい、速度が極端に低下しますのでご注意下さい。
TFT モジュールと 5V 系 Arduino (UNO 互換機) を接続してみたところです...5V 系だとゴチャゴチャしますね。
See Also:
ここにある情報が役に立って、「調べる手間が省けたからオマイに飯でもおごってやるよ」 というハートウォーミングな方がいらっしゃいましたら、下のボタンからどうぞ。