以前、[電子工作]Arduinoを使ったタッチセンサの作り方という記事を書きました。
このブログを見つけてくれる人の中でも「arduino タッチセンサー」と検索して来てくださる方が多いようです。
このタッチセンサーは、放電時間を考えて、ディレイさせないといけなかったりで、ある程度の電気回路の知識がないと難しいです。
そこで、調べてみると、Arduinoのサイトに同じ静電容量方式のライブラリが公開されていたので、その使い方を紹介します。
目次
回路は前回と同じく、このように接続しています。
ライブラリはここからダウンロードできます。
ダウンロードしてArduinoのSketchが入ったディレクトリの中にあるlibrariesディレクトリに入れてあげましょう。
現在はライブラリ管理ツールを使ってインストール可能です。
[スケッチ]→[ライブラリをインクルード]→[ライブラリを管理]を開き、”CapacitiveSensor”で検索して、インストールしましょう。
//ライブラリを読み込み
#include<CapacitiveSensor.h>
CapacitiveSensor cs = CapacitiveSensor(13, 12); // inputは13番ピン, outputを12番ピン
void setup() {
// おまじないと思ってよさそうです。
// キャリブレーションするための時間とかそういうのだと思います。
cs.set_CS_AutocaL_Millis(0xFFFFFFFF);
Serial.begin(9600);
}
void loop() {
// ここの30はノイズをとる強さと考えればいいと思います。
// 大きくすればノイズはとれますが、遅くなり、
// 小さくすれば速くなりますが、あまりノイズはとれません。
long val = cs.capacitiveSensor(30);
// 値をシリアルに書き出し
Serial.print("value:tt")
Serial.println(cs);
// 放電
delay(10);
}
cs.capacitiveSensor()
を呼ぶだけで、タッチセンサーになってくれます。
前回のやつにくらべるとかなり楽に作れるようになっています。
なんで、これで、反応するのかというと、指も導体で、金属板も導体なので、指と金属板の間でコンデンサが作られます。
コンデンサは電気を充電することができて、導体同士(ここでは指と金属板)が近ければ近いほど、充電できる量が大きくなります。
充電量が大きくなると、当然充電が終わるまでかかる時間も長くなります。
この充電時間を計測して、指と金属板が近づいたかどうかを判断するのが静電容量方式のタッチセンサです。身近なところではiPhoneなんかに使われているそうです。
ほかには、圧電方式のタッチセンサーとかもあります。これは圧力がかかった部分を判断させる方式のタッチセンサーです。身近なところではNintendo DSとかはこの方式ですね。
これを増やしたければ、
CapacitiveSensor cs2 = CapacitiveSensor(13, 11);
のように、アウトプットの端子(13番ピン)は共通で、インプットの端子を増やしていけばOKです。
位置をとらないのであれば、タッチセンサーはいとも簡単に作れます。