1. 触れたことを検出する
Xiaccoでは親指で他の指をタッチして音を鳴らすようにしたいので、触ったことを検出するセンサが必要です。僕の知る限りでは- 圧力センサ
- 静電容量式タッチセンサ
参考:Arduino 日本語リファレンス - CapSense(静電容量センサ)
静電容量方式では、金属板と指との間でコンデンサを作り、その静電容量の変化でセンシングを行うみたいです。このライブラリでは、電流がコンデンサを通ってピンが変化するまでの時間を出力できるのかな。このあたりまだよくわかっていませんが、しっかり理解しておかないと細かい点で失敗しそうです。ただ、よくわかっていなくても動かせるのが Arduino の強みでもあると思うので、まずやってみることにしました。
2. 動作チェックから音出しまで
接続のために、秋月電子通商様でコネクタ付コードを購入。片方がアルミホイルを挟むためのクリップになっていて、もう片方が Arduino やブレッドボードにつなげるピンになっているお誂え向きのものです。アルミホイルは小さいほうがよい |
#include <CapSense.h> CapSense cs = CapSense(8, 9); void setup() { Serial.begin(9600); cs.set_CS_AutocaL_Millis(0xFFFFFFFF); cs.reset_CS_AutoCal(); //いらないかも } void loop() { if(Serial.available() > 0) { char c = Serial.read(); long total = cs.capSense(1000); Serial.println(total); } }
Python 側は前とあまり変わりません。CapSense の出力は周期的で、たまに押していてもかなり小さい値を出力します。なのでその辺を無視するためにまた中央値処理をしています。前より安定した出力なので、5つの数値からとっています(この辺の数字が処理速度にかなり影響してるみたい)。どのくらいの数値以上なら音が出るかは、いちいち検証してやってみたほうがいいのかも。
触ると音が鳴ります pic.twitter.com/oHGSCsTr5c— 高砂 (@takasa_five) 2017年3月3日
3. 課題
とりあえずアルミホイルでタッチセンサが作れてよかったです。課題は結構あって、- 相変わらず押してから音が鳴るまで、離してから止まるまでが遅い
- CapSense の仕組みがわかっていないのでコードをいじるのも怖い
- 音が出る/出ないの境目は最初の数秒の平均などをとって自動設定できるのでは?
- 2つ以上のタッチセンサからの入力は可能なのか?7ついけるか?
0 件のコメント:
コメントを投稿