多功能提醒器
生活中,我们对于声音并不陌生,美妙动听的音乐令人陶醉,节奏感十足的鸣笛声令人警醒,然而,当音量达到一定的强度,妨碍到人们正常休息、学习和工作,声音就会成为噪音。
与此同时,闹钟在许多小伙伴的生活中也有着举足轻重的作用,它能及时提醒我们时间。
在这节课上,让我们一起来制作一个行空板多功能提醒器吧,一方面监测环境音量并在音量过大时进行警告,另一方面实时显示时间,在达到指定时间后提醒我们。
任务目标
功能1:将通过行空板麦克风检测到的环境音量显示在屏幕上,同时,设定一个噪音阈值,当音量超过阈值时使蜂鸣器发声进行警告。
功能2:在屏幕上显示一个时钟,当到达设定的时间后,进行提醒。
知识点
1、了解声音及相关概念
2、认识麦克风和蜂鸣器
3、学习使用Pinpong库使蜂鸣器发声的方法
4、学习使用unihiker库检测环境音量的方法
5、学习使用unihiker库显示填充矩形、填充时钟的方法
材料清单
硬件清单:
软件使用:Mind+编程软件x1
知识储备
1、声音及相关概念
物理中声音是由物体振动发生的,正在发声的物体叫做声源。
物体在一秒钟之内振动的次数叫做频率,单位是赫兹。
响度是指人主观上感觉声音的大小,俗称音量。响度由振幅和与声源之间的距离决定,振幅越大,响度越大,和声源的距离越小,响度越大。
音调是指声音的高低(高音、低音),由频率决定,频率越高,音调越高,这节课上我们将会学习通过控制频率的方式来设置音调。
2、麦克风
麦克风也叫传声器,是一种能够将声音信号转换成电信号的器件,可用于检测语音和声音响度,行空板的麦克风是内置在板子的单板机系统上的,这节课上我们使用其环境音量检测功能,检测时返回的是一个百分量,范围在0%-100%,声音越响数值越高。
3、蜂鸣器
蜂鸣器是一种能够发出类似蜂鸣声音的器件。行空板的蜂鸣器是内置在板子的单片机系统上的。
同时,单片机系统上的所有元器件都有各自的功能引脚,蜂鸣器的引脚为P26,可见下图。
4、Pinpong库Tone类中的常见方法
Pinpong库中的Tone类可以控制蜂鸣器发声,在使用前,我们需要先导入Pinpong库,初始化行空板,实例化Tone类来创建一个对象。
from pinpong.board import Board,Pin,Tone # 从pinpong.board包中导入Board,Pin,Tone模块
Board().begin() # 初始化,选择板型和端口号,不输入则进行自动识别
tone = Tone(Pin(Pin.P26)) # 将Pin传入Tone中实现模拟输出
其中,Pin、Tone与Board 类似,都是pinpong.board包下的模块。“P26”指的是板子上蜂鸣器所在的引脚,“Pin(Pin.P26)”是在创建一个引脚对象,最后将这个引脚对象传入Tone类中进行实例化,创建得到一个tone对象。
同时,Tone类的方法有很多,我们只使用其中的一部分,在编程时,通过“对象.方法名()”的形式来实现功能。
(1)freq()方法设置蜂鸣器发声的频率
tone.freq(200) # 按照设置的频率200播放
其中,“200”表示设定的具体的频率大小。
(2)on()方法启动蜂鸣器
tone.on() # 打开蜂鸣器
(3)off()方法关闭蜂鸣器
tone.off() # 关闭蜂鸣器
5、Unihiker库GUI类中的常见方法
GUI类中的方法有很多,我们只使用其中的一部分,在编程时,通过“对象.方法名()”的形式来实现功能。
(1)fill_rect()方法显示填充矩形
GUI类中的fill_rect()方法可以实现在行空板屏幕上显示一个填充矩形。
gui.fill_rect(x=75, y=30, w=90, h=30, color=“#00ff00”) # 显示第一个填充矩形
gui.fill_rect(x=75, y=70, w=90, h=30, color=“#00ff00”) # 显示第二个填充矩形
其中,参数x和y分别表示填充矩形所在的横纵坐标位置,w和h表示填充矩形的宽度和高度,color对应要填充的颜色。
(2)fill_clock()方法显示填充时钟
GUI类中的fill_clock()方法可以实现在行空板屏幕上显示一个填充时钟。
clock = gui.fill_clock(x=120, y=230, r=60, h=3, m=4, s=5, color=(255, 255, 255), fill&