有源和无源蜂鸣器控制
本文基于 FlexLua 低代码单片机技术,无需复杂单片机C语言开发。即使新手也可很容易用FlexLua零门槛开发各种功能丰富稳定可靠的 IoT 硬件,更多学习教程可参考 FlexLua 官网。
一、有源蜂鸣器和无源蜂鸣器
区别: 有源蜂鸣器内部带震荡源,所以只要一通电就会叫。而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫。必须用2K~5K的方波去驱动它。有源蜂鸣器往往比无源的贵,也是因为里面多了一个震荡源的原因。
二者对比:
| | 有源蜂鸣器 | 无源蜂鸣器 |
| 控制方式 | 简单,通过电平方式即可控制 | 稍复杂,需要通过2-5Khz的方波控制 |
| 灵活性 | 只能控制蜂鸣器叫或不叫,只有一个单音 | 声音频率大小灵活可控 |
二、有源蜂鸣器控制例程
有源蜂鸣器的控制很简单,直接给高低电平即可控制。
假设以下程序用的是低电平触发的蜂鸣器,且蜂鸣器的控制引脚接Core的“D0”端口:
--配置D1为普通输出
LIB_GpioOutputConfig("D0","STANDARD")
LIB_GpioWrite("D0",0)--让蜂鸣器开始鸣叫
--开始大循环
while(GC(1) == true)
do
--if something == true then
--LIB_GpioWrite("D0",1)--如果某些条件满足后,关闭蜂鸣器
--end
end
三、无源蜂鸣器控制例程
无源蜂鸣器的控制需要一个2-5Khz的方波,我们可以利用Core的PWM功能来实现。
假设以下程序用的是低电平触发的蜂鸣器,蜂鸣器的控制引脚接Core的“D1”端口,通过程序给蜂鸣器一个2.5Khz,占空比为50%来控制蜂鸣器鸣叫。
--配置D0端口为PWM功能,参数400表示PWM是周期400us(2.5Khz),参数0表示PWM低电平有效
LIB_PwmConfig1(400,0)
--更新D0口的PWM输出占空比为50%
LIB_PwmUpdate1(200)--让蜂鸣器开始鸣叫
--开始大循环
while(GC(1) == true)
do
--if something == true then
--LIB_PwmUpdate1(0)--如果某些条件满足后,关闭蜂鸣器
--end
end
领取专属 10元无门槛券
私享最新 技术干货