
树莓派外加一个有源蜂鸣器,实现一个简单的报时功能。
可能有些新手对于有源、无源蜂鸣器的区别,这里简短介绍下:
一、无源蜂鸣器:
1 无源内部不带震荡源,所以如果用直流信号无法令其鸣叫。必须用2K~5K的方波去驱动它
2 声音频率可控,可以做出“多来米发索拉西”的效果。
3 在一些特例中,可以和LED复用一个控制口
二、有源蜂鸣器:
1 有源蜂鸣器内部带震荡源,所以只要一通电就会叫
2 程序控制方便,单片机一个高低电平就可以让其发出声音,而无源蜂鸣器却做不到。
笔者采用的是有源蜂鸣器:
电压:3.5—5.5V
电流:<25mA
频率:2300±500
为了使蜂鸣器鸣叫的程序模块化,将这一部分代码放到独立的 libbeep.py 文件中。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21  | import RPi.GPIO as GPIOimport timePIN_NO = 12 #GPIO编号,可自定义GPIO.setmode(GPIO.BOARD)GPIO.setup(PIN_NO, GPIO.OUT)#哔1次,时长作为参数传递def beep(seconds):     GPIO.output(PIN_NO, GPIO.HIGH)     time.sleep(seconds)     GPIO.output(PIN_NO, GPIO.LOW)#哔N次,时长、间隔时长、重复次数作为参数传递def beepAction(secs, sleepsecs, times):    for i in range(times):        beep(secs)        time.sleep(sleepsecs)#beepAction(0.02,0.02,30) | 
然后在 alarm.py 中实现整点报时,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25  | import RPi.GPIO as GPIOimport timeimport libbeepwhile True:    t = time.localtime()    h = t.tm_hour    m = t.tm_min    s = t.tm_sec    w = time.strftime('%w',t)    print h,m,s,w    time.sleep(0.3)    if m == 0 and s == 0:        if h>22 or h<8:#为了晚上22点之后,上午8点之前不被打扰,设定了条件 print "continued" continue if h>12:            h = h-12        libbeep.beepAction (0.3,0.5,h)        time.sleep(1)    if m == 30 and s == 0:        if h>22 or h<8:            print "continued"            continue        libbeep.beepAction (0.05,0.05,2)        time.sleep(1) | 
最后运行脚本:
1  | sudo python alarm.py | 

百度搜来搜去都是这篇帖子,可我的是无源蜂鸣器。没办法,还是英文上谷歌吧
void beep()
{
unsigned char i , j;
for (i=0;i<100;i++)
{
BEEP=!BEEP; //BEEP取反
for (j = 0 ; j<250 ; j++) //需要产生方波
_nop_();
}
BEEP=1; //关闭蜂鸣器
}
这是无源蜂鸣器的代码示例
php的话 不知道怎么办好。。
Jag gillar Rock-Philia, men jag är inte riktigt säker pÃ¥ det där med stjärnor pÃ¥ byxorna. Jag fÃ¥r lite hÃit¶gadie-vsbbar av det… (alltsÃ¥ när jag själv gick i högstadiet pÃ¥ 80-talet).EvaK
物理编号为10的引脚能设置为输出引脚吗??
@wblmxxx 可以,后来的树莓派系统这个口被系统占用了,可能需要配置config.txt。建议更换其他IO口。
print “continued”这句是什么用途呢?我感觉没用上?
树莓派4B+,有源蜂鸣器,正极接3.3v,PIN_NO = 12 GPIO.BOARD,负极为 14 GND,为什么会一直长鸣,不跑代码也长鸣,跑代码也是