第二十一篇、基于Arduino uno,控制有源蜂鸣器和无源蜂鸣器发出声音

您所在的位置:网站首页 排箫声音高低原理图 第二十一篇、基于Arduino uno,控制有源蜂鸣器和无源蜂鸣器发出声音

第二十一篇、基于Arduino uno,控制有源蜂鸣器和无源蜂鸣器发出声音

2023-06-03 03:00| 来源: 网络整理| 查看: 265

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、注意事项

说明:有源蜂鸣器工作比较简单,因为内部有震荡源,所以只需要给一个高电平或者低电平就可以发出声音;无缘蜂鸣器因为没有震荡源,所以需要外部给一定频率的高低电平才能发出声音。

5、基本原理

有源蜂鸣器:         有源蜂鸣器通常包括一个振荡器、放大器、以及共振腔等元件。与无源蜂鸣器不同的是,有源蜂鸣器内置驱动电路,可以直接通过DC电源进行驱动,无需外接交流信号。在Arduino中,有源蜂鸣器连接到数字或模拟输出引脚,通过改变输出的高低电平来控制蜂鸣器发声。         Arduino中的有源蜂鸣器通常需要外接一个可调节直流电源,如5V,用于驱动内部驱动电路。与无源蜂鸣器不同的是,在控制蜂鸣器时,将引脚输出设置为低电平(0V)即可打开蜂鸣器,将引脚输出设置为高电平(5V)即可关闭蜂鸣器。 无源蜂鸣器:         无源蜂鸣器通常由一个压电陶瓷薄片、振荡电路以及共振腔组成。在Arduino中,无源蜂鸣器连接到数字或模拟输出引脚,通过改变输出的高低电平来控制蜂鸣器发声。         Arduino中的无源蜂鸣器需要外接一个交流信号,利用交流电信号来驱动压电陶瓷薄片产生声音。在控制蜂鸣器时,将引脚输出设置为高电平(5V)即可打开蜂鸣器,将引脚输出设置为低电平(0V)即可关闭蜂鸣器。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3