目次>5章 第2ステップ(色々な実験)>(10)スピーカを使って音を出す
スピーカを使って音を出す
PICにスピーカをつなげて音を出します。
人間の耳に聞こえる音の周波数は、20Hz〜20,000Hzと言われています。
ここでは、50Hzから10,000Hzまで、徐々に周波数を変えてスピーカを鳴らしてみます。
実験回路 | |||||||||||||||||||||||||||||||||||||||
・ |
今回作成する回路図です。
ブレッドボードに組み込んだ状態です。
| ||||||||||||||||||||||||||||||||||||||
プログラムの作成 | |||||||||||||||||||||||||||||||||||||||
以下のような信号(正弦波)をスピーカに入力すれば音を出すことができます。
しかし、PICから直接正弦波を出力すことはできませんので、以下のようにパルス(ここでは矩形波)を出力することにします。
従って、10mS毎にRA0をON/OFFさせれば、50Hzの低い音が出ます。
1/2サイクルの時間を判断するためにタイマが必要ですが、ここではTMR0割り込みを使用します。 最も短い時間は、10,000Hzの場合で0.05mSです。
TMR0割り込み1回毎にRA0をON/OFFさせれば、約10,000Hz(計算上は9,765Hz)の出力となります。
プログラムでは、以下のようにパルスを発生させます。
まず、1/2サイクルをカウントするカウンタを用意します。 そして、TMR0割り込み毎にカウンタから1づつ減算し、0になったらRA0の出力を反転させます。同時にカウンタには初期値をセットします。
上で説明したカウンタの初期値を、195から1まで100mS毎に−1することで、周波数を50Hzから9,765Hzまで序所に変化させます。
この様子を表したものが下のグラフです。
このプログラムでは、以下のタイマを使用します。
以下はメインルーチンのフローです。
以下は、割込み処理のフローです。
| |||||||||||||||||||||||||||||||||||||||
プログラム全体 | |||||||||||||||||||||||||||||||||||||||
上記の処理を組み込んだプログラムはこちらです。 メモ帳などのテキストエディタに取り込んで、SPEAKER0.ASMという名で保存し、MPLABでアセンブル&PICライタでPICに書き込んで動かしてみて下さい。
|