• 締切済み

プログラムの実行時間(音計測@arduino)

arduinoで音の視覚化プロジェクトを行っているのですが、プログラムの段階で今つまづいています。 スクリーンの両端にマイクを置きスクリーンの前で音を出すと2つのマイクの差(時間差or大きさの差)で位置(1次元)で特定してそこから波を表示させるものを作っています。arduinoにマイクの出力(2個)を入れリアルタイムで処理していきたいのですが時間差にしろ大きさの差にしろarduinoがそこまで高速でないため使おうと思っていたmicros()がうまく使えなかったので今大変困っています。 こういう音のプログラムを動かす際のアルゴリズムなどあれが教えていただけないでしょうか。よろしくお願いします。ちなみに描画するためのプログラムやツールはあるため、arduinoは処理をして位置の座標だけをシリアル通信しようかなと考えています。

みんなの回答

  • tadys
  • ベストアンサー率40% (856/2135)
回答No.1

ソフトウエアで時間計測を行うのでは精度が出ません。 特に微妙な時間差のある二つ以上の信号を取り扱うのはソフトウエアだけでは出来ません。 このような場合は Input Capture 機能を使います。 Input Capture は入力ピンに変化が有った時にタイマーのカウント値を記憶するハードウエアです。 二つのInput Capture入力を持ったCPUを使用してください。 二つのCapture値の差を見れば到達時間差が分かります。 時間差が大きい時はタイマーのオーバーフローを考慮する必要が有ります。 arduinoに使われているATmega48/88/168 にはInput Capture が1個しかないのでこの用途には不向きです。 arduinoには色々種類が有るようなので二つのInput Capture入力を持ったCPUを探してください。 もしなければ他のCPUを探す必要が有ります。

関連するQ&A

専門家に質問してみよう