ロボットの制御にはいろいろありますが、やはり音声やジェスチャがいいかなと思っています。
つづき
まずは音センサを利用した簡単なものを作って確認して行きます。
大きな音がしたら反応するというものです。
音の高低(周波数)や音色(残響等)は見ないで良いとなると参考となるスケッチも沢山ころがっています。
配線
マイクもモジュールの出力をArduinoのA0に接続します。
以上
プログラム
一定以上の”大きさ”の音が入力されたら、LEDを点けたり消したりするものです。
参考にしたのはこのページです。
http://www.geocities.jp/zattouka/GarageHouse/micon/Arduino/ECM/ECM.htm
参考(転載)
int PinFlag ; long TimeCount ; void InterPin() { PinFlag = 1 ; // 割込み有ればON } void setup() { pinMode(13,OUTPUT) ; // 13番ピン付属LED出力 attachInterrupt(0,InterPin, RISING) ; // 2番ピンの割込みを指定(立上がりで割込み) PinFlag = 0 ; TimeCount = 0 ; } void loop() { // 割込み有ればその時点の時刻を保存してLEDを点灯する while(PinFlag) { PinFlag = 0 ; TimeCount = millis() ; // 現在の時刻を保存 digitalWrite(13,HIGH) ; // LEDを点灯 } // 1秒間カウントしたらLEDを消灯する if (TimeCount != 0) { if ((millis() - TimeCount) >= 1000) { TimeCount = 0 ; digitalWrite(13,LOW) ; // LEDを消灯 } } }
これでは誤作動もあるし、反応しないこともあるので、これを契機として音の特徴を捉えることになります。
たとえば、ある一定のパターンで手をたたくと反応する等です。
この簡単な仕組みを用いた最高の作品が、昨年度のモノづくり展の最優秀賞のものでした。
ものづくり文化展2017 最優秀賞受賞作品|ものづくり文化展|ORIGINALMIND オリジナルマインド
この視点、”さすが”です。
本気を出すと
音の高低(周波数)や音色(残響等)を扱う事になるのですが、そのうちに対応します。
次回
お勉強はこれくらいで、実際にプログラムを動かしてみます。
(うごかなかったりして)