- 開発環境: Arduino IDE 2.3.10
- 使用ボード: : Elegoo Nano(Arduino Nano 互換品)
前回はタッチセンサーが反応している間ライトがつくようにしていました。
今回はタッチするたびにオンオフが切り替わるようにします。
使用するセンサーとELEGOO Nanoの配線手順
使用するパーツ
- TTP223:触れると反応する、タッチセンサーモジュール。
- ミニブレッドボード(mini breadboard)
- ジャンパー線
- LED×2個:緑にしたよ!
- 220Ωの抵抗×2個
配線方法
図にするとこんな感じ。

抵抗を共有すると、LEDの個体差で片方に電気が集中して、「片方しか光らない」「過電流で壊れる」原因になるので、必ずLEDごとに1個ずつ接続するらしい。
実際につなぐとこんな感じ。配線へたっぴでそろそろ何かわからないね。

Arduinoのプログラムの作成
先に使用するボードを選択します。

プログラムこんなです。細かいことはコメントに書いてるよ。
const int SENSOR_PIN = 2; //TTP223のSIGピンをD2に接続
const int LED_PIN = 13; //LEDをD13に接続
bool ledState = false; //現在のLEDの状態(false=消灯、true=点灯)
bool lastSensorState = false; // 前回のセンサーの状態
void setup() {
pinMode(SENSOR_PIN, INPUT); //センサーピンをインプットに設定
pinMode(LED_PIN, OUTPUT); //LEDピンをアウトプットに設定
}
void loop() {
bool currentSensorState = digitalRead(SENSOR_PIN); //現在のセンサーの状態
//現在のセンサーがonで、一つ前のセンサーがoffの時だけ実行
if (currentSensorState == HIGH && lastSensorState == LOW) {
ledState = !ledState; //ledStateのonoffを逆転
digitalWrite(LED_PIN, ledState ? HIGH : LOW); // 【条件 ? 正のとき : 偽のとき】の順で処理する書き方
/*
ledState ? HIGH : LOWのところはledStateをそのまま入れてもOK
boolは内部的には内部的には true=1 / false=0 の数字らしい
*/
delay(50); //チャタリング防止
}
lastSensorState = currentSensorState; //1つ前のセンサーの状態を現在のセンサーの状態に入れ替える
}
ボードを接続し、→で書き込み。

一度タッチするとLEDが光ります。

もう一度タッチすると消えます。

免責事項・ご注意
本記事に掲載している回路、プログラム、手順等は、あくまで個人の実験記録であり、動作や安全性を保証するものではありません。万が一、掲載された情報によって機材の破損、怪我、トラブル等が発生した場合でも、当方は一切の責任を負いかねます。実際に試される際は、必ずご自身で仕様や安全性を確認した上で、自己責任にて行っていただきますようお願いいたします。
