0、结果
说明:有源蜂鸣器按照一定的频率报警,无源蜂鸣器则是一直报警,都采用非阻塞方式编写,如果是你想要的,可以接着往下看。
1、外观
说明:有源蜂鸣器和无源蜂鸣器看上去一样,但是背面不一样,第一张图是有源蜂鸣器,第二张图是无源蜂鸣器。也有三个引脚的,其实都是一样的。
2、连线
说明:只需要连接两根线或三根线。
- uno————两个引脚的蜂鸣器
- 7--------------正极
- GND--------------负极
- uno————三个引脚的蜂鸣器
- 5V--------------VCC
- GND--------------GND
- 7--------------I/O
3、源程序
说明:采用非阻塞方式编写,一定时间驱动蜂鸣器,并将对应功能进行函数化,方便移植。
有源蜂鸣器程序:
/*
注意:低电平触发,给低电平就有声音,高电平没有声音,一定的工作频率
*/
/****************************************有源beep part****************************************/
#define beepPin 7 //初始划蜂鸣器引脚
#define beepTimeInterval 1000 //检测一次的时间间隔
unsigned long beepTimes = 0; //记录设备运行时间
int beepCount = 0; //定义一个变量
/****************************************set up and loop part*********************************/
void setup() {
Serial.begin(9600); //设置串口波特率为9600
pinMode(beepPin, OUTPUT); //蜂鸣器引脚设置成输出模式
Serial.println("设备上线!"); //串口打印对应的值
}
void loop() {
ControlBeep(); //控制蜂鸣器工作
}
/****************************************有源beep part****************************************/
/*控制蜂鸣器工作*/
void ControlBeep() {
if (millis() - beepTimes >= beepTimeInterval) {
beepTimes = millis(); //一定时间执行一次
beepCount++;
if (beepCount % 2 == 1) {
Serial.println("蜂鸣器打开!");
digitalWrite(beepPin, LOW); // 蜂鸣器工作
} else {
beepCount = 0;
Serial.println("蜂鸣器关闭!");
digitalWrite(beepPin, HIGH); // 蜂鸣器停止工作
}
}
}
无源蜂鸣器程序:
/****************************************无源beep part****************************************/
/*
注意:无源蜂鸣器,需要一定的频率才能工作。
接线:
VCC------正极
GND------负极
*/
#define buzzer 7 //初始划蜂鸣器引脚
#define beepTimeInterval 5 //检测一次的时间间隔
unsigned long beepTimes = 0; //记录设备运行时间
int beepCount = 0; //定义一个变量
/****************************************set up and loop part*********************************/
void setup() {
Serial.begin(9600); //设置串口波特率为9600
pinMode(buzzer, OUTPUT); //蜂鸣器引脚设置成输出模式
Serial.println("设备上线!"); //串口打印对应的值
}
void loop() {
ControlBeep(); //控制蜂鸣器工作
}
/****************************************无源beep part****************************************/
/*控制蜂鸣器工作*/
void ControlBeep() {
if (millis() - beepTimes >= beepTimeInterval) {
beepTimes = millis(); //一定时间执行一次
digitalWrite(buzzer, HIGH); // 蜂鸣器工作
delay(1);
digitalWrite(buzzer, LOW);
delay(1);
}
}
4、注意事项
说明:有源蜂鸣器工作比较简单,因为内部有震荡源,所以只需要给一个高电平或者低电平就可以发出声音;无缘蜂鸣器因为没有震荡源,所以需要外部给一定频率的高低电平才能发出声音。文章来源:https://www.toymoban.com/news/detail-468836.html
5、基本原理
有源蜂鸣器:
有源蜂鸣器通常包括一个振荡器、放大器、以及共振腔等元件。与无源蜂鸣器不同的是,有源蜂鸣器内置驱动电路,可以直接通过DC电源进行驱动,无需外接交流信号。在Arduino中,有源蜂鸣器连接到数字或模拟输出引脚,通过改变输出的高低电平来控制蜂鸣器发声。
Arduino中的有源蜂鸣器通常需要外接一个可调节直流电源,如5V,用于驱动内部驱动电路。与无源蜂鸣器不同的是,在控制蜂鸣器时,将引脚输出设置为低电平(0V)即可打开蜂鸣器,将引脚输出设置为高电平(5V)即可关闭蜂鸣器。
无源蜂鸣器:
无源蜂鸣器通常由一个压电陶瓷薄片、振荡电路以及共振腔组成。在Arduino中,无源蜂鸣器连接到数字或模拟输出引脚,通过改变输出的高低电平来控制蜂鸣器发声。
Arduino中的无源蜂鸣器需要外接一个交流信号,利用交流电信号来驱动压电陶瓷薄片产生声音。在控制蜂鸣器时,将引脚输出设置为高电平(5V)即可打开蜂鸣器,将引脚输出设置为低电平(0V)即可关闭蜂鸣器。文章来源地址https://www.toymoban.com/news/detail-468836.html
到了这里,关于第二十一篇、基于Arduino uno,控制有源蜂鸣器和无源蜂鸣器发出声音——结果导向的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!