蜂鸣器控制方式征求意见
1.问题描述:要做个蜂鸣器的控制功能(有源蜂鸣器),控制蜂鸣器发出滴滴声音。
有两种模式,有长响和短响,也就是滴声的长度不同。
现在就实现的方式我和他们出现分歧,硬件小哥说简单的,就循环高电平然后延时再低电平。
就类似下面这样:
Beep_on;
delay;
beep_off;
delay;
2.我给的方法是用定时器输出PWM的方式,然后不同占空比实现,关闭蜂鸣器就关掉PWM输出通道就好。
硬件小哥好像不能明白我的意思,一直说不用输出PWM,无源蜂鸣器才用PWM,我也不想去给他讲了~~。
3.高低电平加上延时如果写成普通死循环的开始话我是觉的不行的,因为进入循环系统效率就低了很容易死掉,
后来想着能不能做成单独一个任务形式,因为系统任务的话都是死循环运行的,
我就在任务里面等待全局变量来选择不同的发声模式。目前只是构思而已
4.以上三种方式我自己可以写代码验证的,但是还是秉着遇到问题先充分分析的原则,
选择最优方法,避免浪费时间,所以还是发出来让大家看看,有经验的前辈还请给点建议,谢谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
我没用过你这种蜂鸣器
你就照着思路编嘛,不要管他
就是普通的有源蜂鸣器 给高电平就响 低电平就不响
s的时候关。这样蜂鸣器程序就不用在那一直等。
......有源蜂鸣器的pwm我记得不是控制音 {MOD}的吗?
我是想这样写
int count1=60,count2=300;
bool beep1=0,beep2=0;
main:
if(蜂鸣器短响条件成立)
beep1=1;
if(蜂鸣器长响条件成立)
beep2=1;
定时器中断:
if(beep1)
{
if(count1--)
{
beep=1;//蜂鸣器响
}
else//短响结束
{
beep1=0;
count1=60;
}
}
else if(beep2)
{
if(count2--)
{
beep=1;//蜂鸣器响
}
else//长响结束
{
beep2=0;
count2=60;
}
}
这程序有两个问题:
1.不清楚你的触发条件是什么样的,如果触发的时间较长,这个程序的蜂鸣器会一直响...
2.两个一起触发长响会覆盖短响...
一周热门 更多>