2020年12月3日木曜日

Arduino(ESP32)にタッチパネル液晶

アマゾンでタッチパネル付きのLCDが格安で販売されていたので

買ってみました。

WayinTop 2.8インチ TFT液晶モジュール 240x320 SPI ILI9341搭載 3.3V/5V タッチパネル タッチペン付属 10KΩ抵抗器付属 ジャンパーワイヤー付属

なんと、ピンコネクタケーブル付きで直ぐに使える

ってことで早速サンプルを色々と動かしてみました。

サクサク動くしとても使いやすいですね


で、同時に購入したLCDの乗っかったESP32

WINGONEER T-Display ESP32 CP2104 WiFi Bluetoothモジュール1.14インチ用LCD開発ボード

タッチパネルは無いけどこれもイイですね。


ただし、重大な問題を発見!!

LCDを変える毎にライブラリをイジらないとダメだって???

それじゃライブラリの共有化ができない(T T)


そこで、なんとか頑張って共有化にチャレンジしてみました。


がっ、まだ上手く行っていません。

取り敢えずLCDを変えた場合でも最小の変更ということで

以下の方法で逃げています。


まずはライブラリフォルダ中のlibraries\TFT_eSPI\User_Setup.h

このファイルを以下のようにコメントアウト編集します。

/*▼

#define ILI9341_DRIVER

*/

/*▼

#define TFT_CS   PIN_D8  // Chip select control pin D8

#define TFT_DC   PIN_D3  // Data Command control pin

#define TFT_RST  PIN_D4  // Reset pin (could connect to NodeMCU RST, see next line)

*/


そして


Arduino\libraries\TFT_eSPI\User_Setup_Select.h

このファイルの以下の行の前に色々と追加して

#include <User_Setup.h>           // Default setup is root library folder

こんな感じにしました。
//▼TFT_eSPI.cppを単体でコンパイルしてしまうのでスケッチ内で#defineしても未定義になってしまう
//#define TTGO_ESP32
//#define ILI9341

#if defined (TTGO_ESP32)
#pragma message "found the TTGO_ESP32 so use Setup25_TTGO_T_Display"
#include <User_Setups/Setup25_TTGO_T_Display.h>    // Setup file for ESP32 and TTGO T-Display ST7789V SPI bus TFT
#pragma message "found the TTGO_ESP32 so use ST7789_DRIVER"
#define ST7789_DRIVER      // Full configuration option, define additional parameters below for this display
#elif defined (ILI9341)
#pragma message "found the ILI9341 so use TFT_ILI9341_TP"
#define ILI9341_DRIVER
#define TFT_MISO 19
#define TFT_MOSI 23
#define TFT_SCLK 18
#define TFT_CS   15 // Chip select control pin
#define TFT_DC    2 // Data Command control pin
#define TFT_RST   4 // Reset pin (could connect to RST pin)
#define TOUCH_CS  5     // Chip select pin (T_CS) of touch screen
#elif !defined(ILI9341) && !defined(ST7789_DRIVER)
#pragma message "not found ILI9341 or ST7789_DRIVER"
#define TFT_CS   PIN_D8 // Chip select control pin D8
#define TFT_DC   PIN_D3 // Data Command control pin
#define TFT_RST  PIN_D4 // Reset pin (could connect to NodeMCU RST, see next line)
#else
#endif
//▲

#include <User_Setup.h>           // Default setup is root library folder

これで、頭の行の#define行をLCDに合わせてコメントアウトするだけです。
↓使用するLCDに合わせてコメントを外します。
//#define TTGO_ESP32
//#define ILI9341

本当はスケッチ内の#defineだけで処理できれば嬉しいのですが
スケッチのコンパイルが終わった後に何故かTFT_eSPI.cppを単体でコンパイルしてるようで
その際にスケッチの#defineを読まないので対処できませんでした。



また、日を改めてチャレンジしてみます。

一応ファイルは以下でダウンロードできます。