同じようにネギを振っているだけじゃつまらない
前回までで,マイクロはちゅねは自分でネギを振れるようになりました。しかし,ずっと同じペースで延々とネギを振っているだけでは,見ていてすぐに飽きてしまいます。
いろいろな外界の状況に応じて動くように改良すると,俄然面白くなってきます。今回は,動きに変化をもたせるための情報をマイコンへ与えるという話です。
音楽を聞かせてネギを振らせてみよう
面白くてつぶしの効くテーマとして,音楽に合わせてネギを振らせることを考えてみましょう。たとえば以下の動画に出てきます。
ここで「音楽に合った振り方とは一体何か」という深遠な問題もあるのですが,まずは「音が大きければ速くネギを振り,音がしなくなると止まる」といった程度の簡単な方法を想定することにします。
基本的なやり方は,アナログ・オーディオ信号をマイコンのADC(A/Dコンバータ)に入力して電圧を測定し,その結果からネギ振り速度を計算するというものです。ただしオーディオ信号は微弱なので,マイコンのADC(たとえば10bit精度でフルスケールが3.3Vなら,3.3V/2^10=3.22mVの分解能しかない)に直接入れても変化を検出できません。図1のように簡単なアンプを通す必要があります。
ADCにつながったら,次に考えなければいけないのは,どれだけの速度でデータを処理するかという事です。オーディオのサンプリングレートとしては一般に44.1KHz等がよく使われますが,それを鵜呑みにするのではなく,次に挙げたことなどを検討します。
- ADC自体がそのレートで動作するか
- マイコン・プログラムの速度が間に合うか
- 本当にそのレートで処理することが必要か
たとえばネギ振りは,メカの反応速度の限界ゆえ1秒に高々10回位しかできないものですが,その速度を1秒に44100回も細かく調整してみたところで意味がありません。よって,音量に反応させるのであれば,ずっとゆっくりしたサンプリング・レートで構わないという事になります(図2)。また,ある一瞬での音量ではなくて,一定時間(ウィンドウ)内の平均音量の値を利用したほうが自然になります。

