TA的每日心情 | 开心 2016-8-15 09:30 |
---|
签到天数: 162 天 连续签到: 1 天 [LV.7]常住居民III
|
本帖最后由 小菜儿 于 2014-11-7 13:36 编辑
树莓派外加一个有源蜂鸣器,实现一个简单的报时功能。
可能有些新手对于有源、无源蜂鸣器的区别,这里简短介绍下:
一、无源蜂鸣器:
1 无源内部不带震荡源,所以如果用直流信号无法令其鸣叫。必须用2K~5K的方波去驱动它
2 声音频率可控,可以做出“多来米发索拉西”的效果。
3 在一些特例中,可以和LED复用一个控制口
二、有源蜂鸣器:
1 有源蜂鸣器内部带震荡源,所以只要一通电就会叫
2 程序控制方便,单片机一个高低电平就可以让其发出声音,而无源蜂鸣器却做不到。
笔者采用的是有源蜂鸣器:
电压:3.5—5.5V
电流:<25mA
频率:2300±500
为了使蜂鸣器鸣叫的程序模块化,将这一部分代码放到独立的 libbeep.py 文件中。- 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 中实现整点报时,代码如下:- 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)
复制代码 最后运行脚本: |
|