スピーカータイプのブザーを鳴らすMacでPICマイコン入門MacでPICマイコン入門ベース回路にブザーを接続して、一定時間経過したらブザーを鳴らす回路とプログラムを作成しました。購入されたブザーが、「圧電スピーカー」などの信号を発生させないと鳴らないブザーを買ってしまった場合、前回のプログラムではブザーが鳴りません。今回はスピーカー系のブザーを鳴らしてみます。第25回でブザーの種類を説明しましたが、単純に電圧を加えるとブザーが鳴るものと、鳴らすための信号を発生させる必要があるブザーがあります。今回は補足として、鳴らすための信号を発生させる必要があるブザーを鳴らしてみます。このようなブザーを鳴らすためには、回路の変更は必要なく、プログラムの変更だけで対応することができます。間違って購入されてしまった場合でも大丈夫です。逆にこのような時こそ色々勉強するチャンスですよ。ブザーを鳴らすためには電圧を加えただけで鳴るブザーは、ブザー内部に発音するための回路があらかじめ入っています。このようなブザーは内部でどのような信号を発生させているのでしょうか。ブザーの種類によって異なりますが、例えば以下のような信号を発生させています。この信号って結局電圧が変化しているだけで、この変化に合わせてブザーの振動板が振動して音が出ている、というわけです。スピーカーも振動板を振動させて音を発生させているので同じ原理ですよね。いうことは、この振動を早くすれば高い音が出ますし、振動を遅くすれば低い音が出ます。どのくらいの時間間隔でこの電圧を変化させればいいかというと発音させたい音程によります。人間の耳はだいたい20Hz〜20kHzまで聞き取れるそうですが、ブザーの音としては、だいたい1000Hzぐらいが良いのでは、と思います。今回は1000Hzでブザーを鳴らすことにしてみます。1000Hzで鳴らすには、この信号の時間間隔をどうすればいいのでしょうか。1000Hzとは、1秒間に1000回振動することになりますので、1回の振動は0.001秒、つまり1ミリ秒、ということになります。いうとで、この信号は以下のように0.5ミリ秒OFF、0.5ミリ秒ONを繰り返せばいいことになります。この信号って発生させるのできそうですよね。ブザーは5番ピンのGP2に接続していますので、この信号は、GP2=0;0.5ミリ秒待つGP2=1;0.5ミリ秒待つを繰り返せばよさそうです。あとは0.5ミリ秒の待ちですが、発光ダイオードを光らせる際に使用した関数は、__delay_ms()で、単位はミリ秒ですが、小数点は指定できません。かわりにもっと小さい単位、マイクロ秒で指定できる関数、__delay_us()がありますのでこれを使用します。使用しています)0.5ミリ秒は500マイクロ秒ですので、引数には500を指定します。__delay_us(500);}とすればブザーが鳴ります。この数字を変えるとブザーの音程が変わりますが、あまり高い音程にする(周波数を高くする)と、振動板の振動が追いつかず音が割れたり鳴らなくなったりしますので、この辺りに注意しながら自分の好きな音程を探してみてください。プログラム前回のプログラムでは、時間がきたらGP2=1としてブザーを鳴らしていました。この部分を上のコードに置き換えればOKですが、上のコードは無限ループに入ります。前回のコードではGP2=1でブザーを鳴らした後に発光ダイオードを点灯させていましたので、この点灯のタイミングをブザーのコードの前にする必要があります。最後のwhile(1){}は必要ありませんので削除します。以下にスピーカータイプのブザーを鳴らす場合のプログラムになります。電源投入後は発光ダイオード(GP5)を点灯、ブザーはOFFにしておく。スイッチ(GP4)が押されたら、発光ダイオードを点滅させる。一定時間経過したらブザー(GP2)を鳴らし、発光ダイオード(GP5)を点灯させる。//GP4を入力ピン、それ以外を出力ピンに設定。1秒点滅を10回繰り返す。