树莓派用蜂鸣器实现整点报时

   日期:2024-01-22     浏览:51    评论:0    
核心提示:树莓派外加一个有源蜂鸣器,实现一个简单的报时功能。

buzzer

树莓派外加一个有源蜂鸣器,实现一个简单的报时功能。

可能有些新手对于有源、无源蜂鸣器的区别,这里简短介绍下:
一、无源蜂鸣器:
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 = 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 中实现整点报时,代码如下:

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)

最后运行脚本:

sudo python alarm.py
 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服