よくブラシレス系モーターで、RPMを調整して音楽を奏でるというのが、モーター動作のHelloWorldとしてあるかなと思っています。
今回は、その中でもよく使われる音源の、ファミマ入店音をステッピングモーターで動かしてみました。
ステッピングモーターは前回記事と同じステッピングモータを使っています。
仕組み
ステッピングモーターもそうですが、異相型モーターは回転角度や回転数を調整することができます。
そこでこの回転数を正確に指定できることから、回転数を音符の周波数と合わせてあげることで、音楽を奏でるという仕組みになります。
ファミリーマートの楽譜は以下の通りです。
ファ# レ ラ レ ミ ラ ラ ミ ファ# ミ ラ レ
これを周波数表記にしてあげると、
369Hz 293Hz 220Hz 293Hz 329Hz 440Hz 440Hz 329Hz 369Hz 329Hz 220Hz 293Hz
となります。
この周波数に応じて回転数を指定してあげます。
コード
ステッピングモーターのArduino制御ライブラリはいくつかありますが、ここではAccelStepperを使用しています。
実際のコードはこちらに記載しています。
https://gist.github.com/saitetu/9aff8870ca019563af27f3a01520f312
周波数は倍音という仕組みで、倍数がけした周波数で指定の音階を表現できます。(ピッチ調整)
そこでこのコードでは、音楽が進むにつれて倍音倍音、となっていってピッチが高くなっていきます。
また、音の長さがそれぞれ違うので、回している長さを変更しています。
実際の動き
実際の動きはこちらになります。
参考: