目录
- 目标
- 特点
- 有源蜂鸣器和无源蜂鸣器的区别
- 方波
- 理论
- 实物图
- 接线图
- Mind+
- IDE
目标
用电位器调节无源蜂鸣器发出不同的声音
特点
- 1 无源内部不带震荡源,所以如果用直流信号无法令其鸣叫。必须用2K~5K的方波去驱动它
- 2 声音频率可控,可以做出“多来米发索拉西”的效果。
- 3 在一些特例中,可以和LED复用一个控制口
有源蜂鸣器和无源蜂鸣器的区别
参考:ArduinoUNO实战-第五章-有源蜂鸣器实验
方波
理论
无源蜂鸣器和实际的音响的信号是一样的,是靠频率驱动的,学会无源蜂鸣器可以直接把音响信号接到自己家的音箱上。
实物图
- VCC 外接3.3V-5V电压(可以直接与5v单片机和3.3v单片机相连)
- GND 外接GND
- I/O 外接单片机IO口
接线图
Mind+
- 400表示输出频率
IDE
/*测试无源蜂鸣器
*/// 无源蜂鸣器
#define BUZZER 2
// 定义一个LED
#define LED2 3
// 定义电位器引脚
#define POT A0// the setup function runs once when you press reset or power the board
void setup() {// 打开串口Serial.begin(9600);// 蜂鸣器BUZZER设置为输出pinMode(BUZZER, OUTPUT);// 初始化蜂鸣器不响digitalWrite(BUZZER, LOW);
}// the loop function runs over and over again forever
void loop() {// 电位器控制led灯亮度PwmLed();Buzzer();
}void PwmLed()
{// 读取电位器的值PotBuffer = analogRead(POT); PotBuffer = map(PotBuffer, 0 ,1023 , 0, 255); analogWrite(LED2, PotBuffer);
}void Buzzer()
{// 读取电位器的值PotBuffer = analogRead(POT); // 模拟不同的Hz频率400Hz,也即是1秒中输出400个方波,蜂鸣器支持2k-5K的频率,我们本案例模拟1K的频率for(int i = 0; i<100; i++){digitalWrite(BUZZER, HIGH);// 休眠微妙delayMicroseconds(PotBuffer);digitalWrite(BUZZER, LOW);// 休眠微妙delayMicroseconds(100); }delay(1000);
}
无源内部不带震荡源,所以如果用直流信号无法令其鸣叫。必须用2K~5K的方波去驱动它,所以上述的循环就是为了模拟方波,而方波是有高有低的频率。