Groveで広がるArduinoの世界-Senser Kit-⑩ Grove Buzzer
ブザーには、電圧をかけると音が出る(鳴る)自励式と、数kHzの信号を入力すると鳴る他励式の2種類があります。Grove Buzzerは、どちらでしょう?
●接続
D5端子につなげているSIG端子から、1kΩの抵抗を通してトランジスタにつながります。トランジスタでブザーymd12065をドライブします。センサ・キットに入っていますが、ブザーは出力デバイスです。
●プログラム
製造元のGrove - Buzzerにあるスケッチを動かします。
void setup() { pinMode(5, OUTPUT); } void loop() { digitalWrite(5, HIGH); delay(1000); digitalWrite(5, LOW); delay(1000); }
1秒ごとにカチカチという音は聞こえますが、ブザーはなりませんでした。自励式ではないようです。なのに、サンプル・スケッチがあるのは、意味不明です。
では、THE BUZZERのページにあるtone関数を使ったサンプル・スケッチを動かします。
#define BUZZER 5 void setup() { // put your setup code here, to run once: pinMode(BUZZER, OUTPUT); } void loop() { tone(BUZZER, 85); //Set the voltage to high and makes a noise delay(1000);//Waits for 1000 milliseconds noTone(BUZZER);//Sets the voltage to low and makes no noise delay(1000);//Waits for 1000 milliseconds }
ジー、ジーというブザーが鳴りました。tone関数は、次のように三つの引数をもちます。
tone(pin, frequency, duration)
duration=鳴らす時間ですが、省略できます。止めるときは、noTone(pin)関数を使います。
周波数を85Hzから440Hzに変更しました。強めのピーという感じになりました。2000Hzは小さな音でピーと鳴っているようです。しっかり音量を望むなら1000Hzまでにしておいたほうがよいようです。
●応用
光センサが暗い状態を感知したらブザーを鳴らします。
#include "Arduino_SensorKit.h"
#define light_sensor A3
#define BUZZER 5
void setup()
{
// put your setup code here, to run once:
pinMode(BUZZER, OUTPUT);
Environment.begin();
}
void loop()
{
int raw_light;
raw_light= analogRead(light_sensor); // read the raw value from light_sensor pin (A3)
int light = map(raw_light, 0, 1023, 0, 100);
if (light < 5 ) {
tone(BUZZER, 1000); //Set the voltage to high and makes a noise
delay(1000);//Waits for 1000 milliseconds
noTone(BUZZER);//Sets the voltage to low and makes no noise
delay(1000);//Waits for 1000 milliseconds
}
delay(2000);
}