前回はADCを使用して電圧を読み取ってみました。
今回はタッチセンサーの使い方を学習します。今回もプログラミング要素は少ないです。
タッチセンサーについて
ESP32-S3は最大14本の静電容量式タッチGPIOを提供します。従来のメカニカルスイッチは使用時にジッター(信号の乱れ)が発生するため、ジッター対策が必要でしたが、ESP32-S3内蔵のタッチセンサーではそのような問題はありません。さらに、耐久性の面でも、タッチスイッチはメカニカルスイッチを凌駕するほどの長寿命を誇ります。
ESP32-S3のタッチセンサーは、最大14のGPIOチャンネルを静電容量式タッチピンとして利用できます。それぞれのピンは、独立したタッチスイッチとして使用することも、組み合わせて複数のタッチ検出ポイントを作ることも可能です。下表は、ESP32-S3で利用可能なタッチピンのリストです。
Name of touch sensing signal | GPIO number |
---|---|
T1 | GPIO1 |
T2 | GPIO2 |
T3 | GPIO3 |
T4 | GPIO4 |
T5 | GPIO5 |
T6 | GPIO6 |
T7 | GPIO7 |
T8 | GPIO8 |
T9 | GPIO9 |
T10 | GPIO10 |
T11 | GPIO11 |
T12 | GPIO12 |
T13 | GPIO13 |
T14 | GPIO14 |
ESP32-S3のコードベースでは、タッチピン番号があらかじめ定義されています。たとえば、コード内でT1を使用することで、GPIO1を表すことができます。タッチ操作によって発生する電気信号はアナログデータであり、ESP32-S3内のADC(アナログ/デジタル変換回路)によってデジタル化されます。これは、すべてのタッチピンがADC機能を備えているためです。
回路図
接続図
GPIO14に触れられれば良いので、ジャンプワイヤーを繋がなくても大丈夫です。
コード
/**********************************************************************
Filename : TouchRead
Description : Read touch sensor value.
Auther : www.freenove.com
Modification: 2022/10/21
**********************************************************************/
void setup()
{
Serial.begin(115200);
}
void loop()
{
Serial.printf("Touch value: %d \r\n",touchRead(T14)); // get value using T14(GPIO14)
delay(1000);
}
プログラムをアップロードしたら、GPIO14に触れてみましょう。シリアルモニターの値が変化することがわかると思います。
次回はタッチセンサーを使ってLEDを操作してみましょう。
コメント