Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

概要

私は「ESP32」と「2.8インチTFT液晶ボード(ILI9341ベース)」をよく使用します。

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

1.LCDのバックライト点灯 & LCDに「Start」と表示
 ↓ 5秒後
2.LCDのバックライト消灯 & LCDに「LED off」と表示
 ↓ 画面をタッチ
3.LCDのバックライト点灯 & LCDに「Touched & LED on」と表示
 ↓ 5秒後
4.LCDのバックライト消灯 & LCDに「LED off」と表示
 ↓ 画面をタッチ
(以降、省略)

 
今回の目的は以下の2つです
・今後のアプリケーションに流用できそうなコードを作る
・バックライトの消費電流を把握する(大体で良いので)

使用したもの

結線

以下の表の通りに結線しました。タッチに関する端子は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

※この写真の向きで液晶ボードを使用
mojikyo45_640-2.gif

Arduinoのライブラリ準備

以下の2つのライブラリを使用します。githubからzipファイルをダウンロードして、インストールします(参考記事

Adafruit_ILI9341 :バージョン1.5.1
Adafruit-GFX-Library :バージョン1.6.1

Arduinoのスケッチ

Arduinoのスケッチはgithub(リンク)に置きました。

消費電流の測定

マルチメーターを使用して測定しました。メータの値が落ち着いた辺りの結果は以下の通りです。LCDのバックライトで約45mAの電流を消費していることがわかりました。

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

終わりに

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

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

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

そこで調べたところ、hw_timer_t型のタイマーではなくてTickerがよさそうだとわかりましたので、そのようにしています。(参考リンク

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

参考記事

更新履歴

  • 2019-11-25:新規作成
TwDaiki
雑食系エンジニアです。よろしくお願いします。
https://github.com/bigw00d
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away