らずらいと姫の挑戦日記(第19回)~静電タッチ装置を作る!~
2016-08-23

静電タッチとは、触れたら反応する、そんな装置です!
タッチパネルの仕組みと同じです。
今回は触ったらLEDが光る装置を作ってみたいと思います☆
回路図
この回路図の通りに、初めてのはんだ付け&配線に挑戦しました!
まず、8番と2番を1MΩをつけて繋ぎ、3番にLEDをつけ、3V3との間に200Ωをつけました。
動かしてみよう
1)はんだ付けと配線をした基盤と、Lazuriteをセットします。
2)↓↓↓これが静電タッチのプログラムです。Lazurite IDEに貼り付け、マイコンボードへ転送!!
[c]
bool event;
void callback(void)
{
event = true;
}
void setup() {
// put your setup code here, to run once:
event = true;
Serial.begin(115200);
pinMode(2,OUTPUT);
pinMode(8,INPUT);
pinMode(3,OUTPUT);
digitalWrite(3,HIGH);
timer2.set(100L,callback);
timer2.start();
}
void loop() {
// put your main code here, to run repeatedly:
int i;
bool result[3];
wait_event(&event);
event = false;
for(i=0;i<3;i++)
{
unsigned long duration[2];
digitalWrite(2,HIGH);
duration[0] = pulseIn(8,LOW,50);
digitalWrite(2,LOW);
duration[1] = pulseIn(8,HIGH,50);
if((duration[0] > 50) || (duration[1] > 50)) result[i] = true;
else result[i] = false;
sleep(1);
}
if((result[0] == true) && (result[1] == true) && (result[2] == true))
{
digitalWrite(3,LOW);
}
else if((result[0] == false) && (result[1] == false) && (result[2] == false))
{
digitalWrite(3,HIGH);
}
}
[/c]
3)線を指で触ってみると、LEDが光りました♪指を離すと、LEDが消えます。無事に動きました☆
触っているのに一瞬消えてしまったり、たまに誤検出するので、改良の余地はありですね。
どうして触るとLEDが光るの?
線に触れたたけでLEDが光るなんて、一体どんな仕組みになっているのでしょうか?
波形を見てみると分かりやすい、と教えていただいたので、触っていない時の波形と、触った時の波形をとってみました。
- 黄色→8番ピン
- ピンク→2番ピン
触っていない時の波形
2番ピンをHにすると、少し遅れて8番ピンがHになります。
その後に2番ピンをLにすると少し遅れて8番ピンがLになります。
触った時の波形(1)
2番ピンをHにしても8番ピンはなかなかHになりません。
触った時の波形(2)
時間軸を拡大してみると…ピンクと黄色の波形が全く違います。
これは、触った人がACコンセントの50Hzの影響を受けて、触った場所がこのような状態になってしまうそうです。
このように触る、触らないの差が分かったので、後はこれをプログラムで識別するだけです。
今回のプログラムでこの違いをどのように識別しているかと言うと、『pulseIn』と言う関数で、8番ピンがLからHへ、またHからLに変化する時間を計っているだけだそです。それを3回計測して、全て同じ結果の時は触っている・触っていない、というように8番ピンの状態が変わったと認識してLEDのON/OFFをきりかえていたんです!
今では色んな場所で使われているタッチパネルが、こんな仕組みになっていたんですね。
驚きです!!!
次回は、この装置にAC電源をつけて、色んなものを入/切してみたいと思います☆