今回、電圧ブザーを用いて音を出してみたいと思います。今回使用するブザーは上記のURLと同じものを使用します。なので、極性を考慮しなくてもおkです。
以下のコードでブザーが鳴ります。
buzzer.js
1 var b = require('bonescript');
2 var buzzerPin = "P8_19";
3 var volume = 0.02;
4 var state = 0;
5
6 // configure pins
7 b.pinMode(buzzerPin, b.OUTPUT);
8
9 beap = function() {
10 state = state ? 0 : 1;
11 if(state == 0) b.analogWrite(buzzerPin, volume, 2000);
12 else b.analogWrite(buzzerPin, b.LOW);
13 };
14
15 timer = setInterval(beap, 500);
16
17 stopTimer = function(){
18 clearInterval(timer);
19 b.analogWrite(buzzerPin, b.LOW);
20 };
21
22 setTimeout(stopTimer, 15000);
はじめからコードを解析していく。
いつも通りbonescriptを読み込んでいます。
次にPINを指定。今回音を出すためPWMが使えるポートを使用。なぜPWMが使えるかを指定するかは学習不足だが、音を出すため圧電ブザーに周波数を与えてやる必要が有ると推測。そのため、今回はanalogWriteという関数を使用します。詳しくはドキュメントを読んだ方がいい。
それで、今回volumeの値を0.02にしてるけど、この値を小さくしたり大きくしたりすると音の大きさが変わるので、詳しくは調べる必要あり。
今回のプログラムはLEDの時のものを工夫したもので、15秒の間に音を出したり出さなかったりするやつです。
以下にPWM出力可能なPINが載っている画像を載せときます。
今回無事音を出せましたが音を出すにあたっての仕組みなどを勉強する必要がありそうです。
次回はスイッチを使ってLEDやブザーを鳴らすか、HC-SR04という超音波センサーを使って遊んでみようと思います。