我正在尝试使用 Arduino 制作一个警报系统。我希望连接到系统的警报器能够输出两种不同类型的声音。我知道如何发出低沉的“嘟嘟”声音,但我不知道如何使用tone命令或tone命令的变体或类似命令让Arduino发出“whoop whoop”声音命令。
关于这个主题,我将如何使用 Arduino 驱动更高功率的警报器/喇叭?我可以像驱动 12v LED 一样使用 MOSFET 晶体管吗?
非常感谢任何帮助。谢谢:-)
编辑:
这是我发出噪音的主循环:
void loop() {
int i = 200; // The starting pitch
while(i < 800) {
i++;
tone(buzzer, i); // Emit the noise
delay(5);
}
delay(100); // A short break in between each whoop
}
每次发出噪音时,都会发出一些(大约 3-4 次)小“爆裂声”,就像失真一样。对于直接连接到 Arduino 的小压电器件来说,它并不是很明显,但我怀疑当我使用更大的发声器和放大器时,它会更明显。
我为此为愚人节笑话编写了一些代码,如下:
void loop {
// Whoop up
for(int hz = 440; hz < 1000; hz++){
tone(speakerPin, hz, 50);
delay(5);
}
noTone(speakerPin);
// Whoop down
for(int hz = 1000; hz > 440; hz--){
tone(speakerPin, hz, 50);
delay(5);
}
noTone(speakerPin);
} // Repeat
其中
speakerPin
是连接到扬声器的引脚。
希望这有帮助。
稍微修改一下 交替哀号警报。 ;)
#define speakerPin 11
void setup()
{
pinMode(speakerPin,OUTPUT);
}
void loop()
{
// Whoop up
for(int hz = 300; hz < 1000; hz++)
{
if((hz/100)%2)
tone(speakerPin, hz, 50);
else
tone(speakerPin, hz+150, 50);
delay(6);
}
noTone(speakerPin);
// Whoop down
for(int hz = 1000; hz > 300; hz--){
if(!((hz/100)%2))
tone(speakerPin, hz, 50);
else
tone(speakerPin, hz+150, 50);
delay(6);
}
noTone(speakerPin);
} // Repeat