树莓派外加一个有源蜂鸣器,实现一个简单的报时功能。
可能有些新手对于有源、无源蜂鸣器的区别,这里简短介绍下:
一、无源蜂鸣器:
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 GPIO import time PIN_NO = 10 #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
26
27
28
|
import RPi.GPIO as GPIO import time import libbeep while 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 |
未经允许不得转载:网购经验网 » 树莓派用蜂鸣器实现整点报时
评论前必须登录!
登陆 注册