簡易版タッチ検出でLCDのバックライトを点灯<->消灯する（Arduino-ESP32 with 2.8 "TFT液晶ボード）

# 概要
私は「ESP32」と「[2.8インチTFT液晶ボード(ILI9341ベース)](https://www.amazon.co.jp/HiLetgo%C2%AE-LCD%E3%83%87%E3%82%A3%E3%82%B9%E3%83%97%E3%83%AC%E3%82%A4-%E3%82%BF%E3%83%83%E3%83%81%E3%83%91%E3%83%8D%E3%83%AB-SPI%E3%82%B7%E3%83%AA%E3%82%A2%E3%83%AB240-ILI9341/dp/B072N551V3)」をよく使用します。

今回は、そのLCDのバックライトを画面タッチと合わせてお手軽に利用したいと思いましたので、以下のようなArduino-ESP32アプリケーションを作成しました。

```
１．LCDのバックライト点灯 ＆ LCDに「Start」と表示
　↓ 5秒後
２．LCDのバックライト消灯 ＆ LCDに「LED off」と表示
　↓ 画面をタッチ
３．LCDのバックライト点灯 ＆ LCDに「Touched & LED on」と表示
　↓ 5秒後
４．LCDのバックライト消灯 ＆ LCDに「LED off」と表示
　↓ 画面をタッチ
（以降、省略）
```
　
今回の目的は以下の2つです
・今後のアプリケーションに流用できそうなコードを作る
・バックライトの消費電流を把握する（大体で良いので）


# 使用したもの
* [ESPr® Developer 32](https://www.switch-science.com/catalog/3210/)　 ※これ以降は「ESP32］と呼称

* [HiLetgo® 2.8 "TFT LCDディスプレイ タッチパネル](https://www.amazon.co.jp/HiLetgo%C2%AE-LCD%E3%83%87%E3%82%A3%E3%82%B9%E3%83%97%E3%83%AC%E3%82%A4-%E3%82%BF%E3%83%83%E3%83%81%E3%83%91%E3%83%8D%E3%83%AB-SPI%E3%82%B7%E3%83%AA%E3%82%A2%E3%83%AB240-ILI9341/dp/B072N551V3)

# 結線

以下の表の通りに結線しました。タッチに関する端子はT_IRQのみ使用します。（座標などの検出は不要）

|ESP32  |LCD  |
|---|---|
|VOUT  |VCC  |
|GND  |GND  |
|IO13  |CS  |
|IO12  |RES  |
|IO14  |DC  |
|IO27  |MOSI  |
|IO26  |SCK  |
|IO17  |LED  |
|IO25  |MISO  |
|IO23  |T_IRQ  |

※この写真の向きで液晶ボードを使用
<img width="400" alt="mojikyo45_640-2.gif" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155449/27533a9f-688c-e3db-39d9-d110b17eeaca.png">


# Arduinoのライブラリ準備
以下の2つのライブラリを使用します。githubからzipファイルをダウンロードして、インストールします（[参考記事](http://www.humblesoft.com/wiki/?Arduino%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB#w73a0896)）

・[Adafruit_ILI9341](https://github.com/adafruit/Adafruit_ILI9341)　：バージョン1.5.1
・[Adafruit-GFX-Library](https://github.com/adafruit/Adafruit-GFX-Library)　：バージョン1.6.1

# Arduinoのスケッチ

Arduinoのスケッチはgithub[（リンク）](https://github.com/bigw00d/esp32_ili9341_2.8_tft_touch_display/blob/master/examples/simple_touch_lcd_backlight_on/simple_touch_lcd_backlight_on.ino)に置きました。

# 消費電流の測定

[マルチメーター](https://www.amazon.co.jp/Synktech-MS8233D%E9%AB%98%E7%B2%BE%E5%BA%A6-%E3%83%87%E3%82%B8%E3%82%BF%E3%83%AB%E3%83%9E%E3%83%AB%E3%83%81%E3%83%A1%E3%83%BC%E3%82%BF%E3%83%BC-%E9%9B%BB%E6%B5%81%E3%83%BB%E9%9B%BB%E5%9C%A7%E3%83%BB%E6%8A%B5%E6%8A%97%E3%83%86%E3%82%B9%E3%82%BF%E3%83%BC/dp/B010PCKFSE/ref=pd_sbs_328_t_1/355-4272377-9211515?_encoding=UTF8&pd_rd_i=B010PCKFSE&pd_rd_r=3646e88e-4fdc-402b-b241-7cb378541fa1&pd_rd_w=KGbsp&pd_rd_wg=AwpRX&pf_rd_p=ca22fd73-0f1e-4b39-9917-c84a20b3f3a8&pf_rd_r=1NPBCW77A1YDR0Z51ECB&psc=1&refRID=1NPBCW77A1YDR0Z51ECB)を使用して測定しました。メータの値が落ち着いた辺りの結果は以下の通りです。LCDのバックライトで約45mAの電流を消費していることがわかりました。

・バックライト使用時：約98.2mA
・バックライト不使用時：約53.8mA

# 終わりに

ここで使用しているタッチ検出は、液晶ボードのT_IRQという信号がタッチ検出時にHigh→Low→Highとなることを利用して、外部信号のローレベル割り込みを使用しています。

しかし、ILI9341コントローラのライブラリにはタッチ検出をサポートしているものも多くあるので、それを利用してもいいかもしれません。

また、今回は、タッチ検出後のタイマーの停止→再開の実現に、予想以上に手間取りました。

そこで調べたところ、hw_timer_t型のタイマーではなくてTickerがよさそうだとわかりましたので、そのようにしています。（[参考リンク](https://github.com/espressif/arduino-esp32/issues/2944#issuecomment-514462796)）

見ていただいてありがとうございました。
тнайк чoμ_〆(・ω・｡)			
			

# 参考記事

 + いろんなことで四苦Hack（仮） b1u3の技術ブログ
  + http://b1u3.hateblo.jp/entry/2018/10/21/024547

			
# 更新履歴
* 2019-11-25：新規作成