信大ロボ研のブログ

信州大学ロボット研究会のブログです。

梵天丸アセンブラ制御研究報告5回目

こんにちは、2年のたぬです。
メカトロで遊ぶ会が開発した『PIC16F84Aを使っている入門者向け自律走行ロボットキット』である梵天丸を、アセンブラ言語によって制御する研究の中間報告5回目っぽいです。

本日の成果は以下の通りです。
梵天丸にド(C)〜シ(B)の音を出させることに成功
梵天丸は、出力装置としてLED2つとタミヤモーター2つがくっついています。
そのうち、モーターに対して交流電流を流すと、回転せずに振動します。
この振動を制御することによって、モーターをスピーカーとして運用することができます。
PIC16F84AにはPWM出力機能が無いので、プログラムで擬似的にPWMを再現することにしました。
具体的には、モーターの正転と逆転をある特定の周期で繰り返しました。
1音階の音の周波数は、決まっています。ググれば出てきます。この1音階のそれぞれの音に相当する周期で、モーターの正転と逆転をコントロールすることによって、モーターから欲しい音を作り出すことができます。

最終的な目標は、「梵天丸にカエルの歌とふわふわ時間を歌わせること」です。
そのためには、どうしても内蔵タイマー(タイマー0)による割り込み処理が必要になります。PICはひとつの命令しか実行できないので、音を出す命令をしている最中に時間を計る命令を同時進行で行うことはできません。曲を流すには、四分音符、八分音符等の「音を特定時間だけ流す」という処理が必要になります。
PWM出力端子があれば何の問題もなく解決できたのですが、無いので仕方ないです。

本日は、内蔵タイマーの研究をしている最中で終わらせました。
タイマー0の制御と割り込み処理の制御を学ぶために「何もしない無限ループをしている最中にタイマー0によって割り込みをかけてLEDを消灯させるプログラム」を組んだのですが、思うように動作しません。
次回はこの続きを行います。