趣味闹钟(下)

今天也要加油鸭, 彩虹那么美,你也应该看得见
帖子创建于2019年10月14日 基础使用 2032 次浏览 2 个赞 2 人关注

趣味闹钟(下)——语音闹钟

在之前的学习中,我们制作了网络闹钟,现在我们给闹钟加上小憩功能和语音功能。在预定的时间闹钟会一直语音报时,如果按下掌控板的A按键,停止闹钟;如果按下掌控板的B按键,可以开启闹钟的小憩模式,让闹钟五分钟之后再响。

材料清单

动手编程序

制作语音闹钟需要6个步骤:

1、程序初始化;

2、绘制并设置闹钟;

3、在预定时间闹钟语音报时;

4、按下B按键再睡五分钟;

5、按下A按键闹钟停止;

6、重复执行。

程序流程图如图所示


一、程序初始化

1、(1)首先程序需要初始化,设为定义函数csh。

(2)利用掌控板的WiFi模块,获取网络的实时时间。

(3)通过网络授时来获取国际标准时间,北京时间属于东八区,该模块的时区和授时服务器默认是不用改动的。

(4)初始化时钟,设置时钟在掌控板OLED屏幕上显示的位置和半径。


2、(1)创建布尔型变量“c”,如果为真,在掌控板OLED屏幕上绘制实时时钟。根据程序流程图,需要在初始化时将变量“c”设为真。

☺小贴士

布尔型变量是只有两种逻辑状态的变量,它包含的两个值是真和假。

(2)创建布尔型变量“8am”,在达到预定时间时,闹钟会语音报时,此时变量8am为真。在初始化时要将变量“8am”设为假。


3、制作语音闹钟,需要运用到语音合成(TTS)功能。TTS是Text To Speech的缩写,即“从文本到语音”,是人机对话的一部分,能将文字信息转化为声音信息,让机器能够说话。掌控拓展板的在线语音合成功能是使用讯飞在线语音合成API ,在使用该功能前,我们需要在讯飞开放平台注册并做相应的配置。

Step1 在讯飞 https://www.xfyun.cn 注册账号。


Step2 创建新应用,填写应用名称、应用分类和应该功能描述,应用平台选择“WebAPI”。


Step3 添加“在线语音合成”服务,在http://www.ip138.com查询自己的公网IP,添加到IP白名单并保存,然后将APPID和APIKey复制到程序中。



4、同样的,在使用语音合成功能之前,需要将音频初始化,并根据需求设置音频的音量。


二、绘制并设置闹钟

定义函数clock:程序调试/输入后,如果变量“c”为真,清空OLED屏幕,读取时间,绘制出时钟。而且每次读取时间前需要清空之前的显示内容,才能让时间不断替换更新。

设定闹钟在本地时间为早上八点整时,启动语音报时,此时将变量“8am”设定为真。


※指令我先知

有限循环语句,表示从起始数到结尾数取出变量的值,按指定的间隔执行相应的程序


三、在预定时间闹钟语音报时

定义函数a:如果变量“8am”为真,即当前时间与预定的闹钟时间一致,根据程序流程图可知,此时需要开启TTS语音合成功能重复播放“现在是北京时间几时几分”。而且掌控板OLED屏幕上已经不再需要显示实时时钟,所以将变量“c”设定为假,清空OLED屏幕,在屏幕上显示“起床啦!起床啦!”。


☺小贴士

掌控板获取到的“本地时间”属于数字类型,但是控拓展板的在线语音合成功能读取的内容只能是文本,所以我们需要使用“文本转换”指令,将时间数据转换成文本。

四、按下B按键再睡五分钟

定义函数b:在保证TTS语音播放内容为本地时间且OLED屏停留在“起床啦!起床啦!”界面的情况下, 即变量“8am”为真,当B按键被按下之后,即闹钟启动再睡5分钟模式,此时TTS语音不再需要播放本地时间,所以将变量“8am”设为假。等待3秒后,再用TTS语音播放“再睡5分钟”,并且在OLED屏幕上显示出来。等待300秒,即五分钟过后,闹钟再次响起,这时可以重新将变量“8am”设定为真。


☺小贴士

等待3秒是为了预留足够的时间让程序执行完之前的命令,TTS语音播放完之前的文本内容。

五、按下A按键闹钟停止

定义函数c:在保证TTS语音播放内容为本地时间且OLED屏停留在“起床啦!起床啦!”界面的情况下, 即变量“8am”为真,当A按键被按下之后,即停止闹钟,此时TTS语音不再需要播放本地时间,所以将变量“8am”设为假。等待3秒后,再用TTS语音播放“停止闹钟”,并且要在OLED屏幕上显示出来。根据程序流程图,最后需要将变量“c”设定为真,即让OLED屏幕显示实时时钟。


六、重复执行

将定义函数放在重复执行的程序内,完善程序,方便多次使用。


脑洞大开

你能为语音闹钟增加一个倒计时功能吗?赶紧挑战一下吧!