タッチセンサモジュールを使ってみる(Arduino)
今回は、タッチセンサモジュールをスイッチとして、
Arduino UNO本体のLED を点灯させてみます。
使用するタッチセンサモジュールは、
・ダーリントントランジスタ (KSP13-F51) を使用したもの
・静電容量式を使用したもの
の2種類です。
ダーリントントランジスタを使用したものは、
ベース端子をタッチすることで、
ベースに非常に小さなベース電流が流れ、
これによりコレクタに大きな電流がれる仕組みを
利用したものです。
・タッチセンサモジュール [KY036]
(電圧コンパレータLM393使用)
aitendo
https://www.aitendo.com/product/12440
¥295-(大陸:\80-程度)
静電容量式タッチモジュールを使用したものは、
一定の静電容量を保持したタッチ面にタッチすることで、
静電容量の変化が生じ、
この静電容量が変化(減少)したことを感知する
仕組みを利用したものです。
・静電容量式タッチモジュール(1ch) [MSW223-R]
(静電容量式タッチコントローラチップTTP223使用)
aitendo
https://www.aitendo.com/product/16328
1個 ¥195-(大陸:2個\54-程度)
では、さっそく使用してみます。
先ずは、ダーリントントランジスタ使用のものからです。
回路は図の通りです。
この回路図の作図には fritzing を利用させて頂いております。
https://fritzing.org/home/
デジタル端子13番のLEDの点灯に加え、
このセンサモジュールには、アナログ出力端子があるので、
シリアルモニタにこの出力データを電圧値変換したものを
表示してみます。
スケッチです。
// タッチセンサモジュール(LM393)
// 使用ポート設定
int ain_pin = A0; // タッチセンサアナログデータ入力用
int din_pin = 9; // タッチセンサデジタルデータ入力用
int led_pin = 13; // LED点灯用
void setup() {
// put your setup code here, to run once:
//シリアルモニタ設定(9600bps)
Serial.begin (9600);
// ピンモード設定
pinMode(din_pin, INPUT); // 9番ピンを入力モードに設定
pinMode(led_pin, OUTPUT); // 13番ピンを出力モードに指定
}
void loop() {
// put your main code here, to run repeatedly:
// 変数宣言
int a0_data; // アナログ入力データ用
int d9_data; // デジタル入力データ用
float val_data; // アナログデータ電圧値変換用
// タッチセンサ情報受信
a0_data = analogRead(ain_pin); // アナログデータ
d9_data = digitalRead(din_pin); // デジタル入力データ用
// アナログデータを電圧値に変換とシリアルモニタへ出力
val_data = (float)a0_data / 1024.0f * 5.0f;
Serial.println (val_data, 4);
// デジタル情報によるLEDの点灯・消灯を設定
if(d9_data == HIGH){
digitalWrite(led_pin, HIGH); // LED点灯
delay(500); // 500ms待機
} else {
digitalWrite(led_pin, LOW); // LED消灯
}
delay(10); // 10ms待機
}
書き込みをして実行してみます。
シリアルモニタを見てみると、
アナログ信号では、タッチしていない時は、5V程度、
タッチした時は、1V程度の電圧になるようです。
デジタル信号では、スケッチから、
タッチしていない時は、LOW、
タッチした時は、HIGHが出力されています。
続いて、
静電容量式タッチセンサモジュールです。
回路は図の通りです。
こちらは、タッチした時に、
デジタル端子13番のLEDが点灯するものです。
スケッチです。
// タッチセンサモジュール(TTP223)
// 使用ポート設定
int din_pin = 9; // タッチセンサデータ入力用
int led_pin = 13; // LED点灯用
void setup() {
// put your setup code here, to run once:
// ピンモード設定
pinMode(din_pin, INPUT); // 9番ピンを入力モードに設定
pinMode(led_pin, OUTPUT); // 13番ピンを出力モードに指定
}
void loop() {
// put your main code here, to run repeatedly:
// 変数宣言
int d9_data; // デジタル入力データ用
// タッチセンサ情報受信
d9_data = digitalRead(din_pin);
// デジタル情報によるLEDの点灯・消灯を設定
if(d9_data == HIGH){
digitalWrite(led_pin, HIGH); // LED点灯
} else {
digitalWrite(led_pin, LOW); // LED消灯
}
delay(10); // 10ms待機
}
書き込みをして実行してみます。
タッチすると、LEDが点灯します。
静電容量式なので、
完全にタッチしなくても、反応しますね。
タッチセンサモジュールは、用途よりますが、
タッチによる、ON、OFF 感知だけなら、
静電容量式タッチセンサモジュールが
使いやすいように感じます。