谈谈我错过的《Huawei LiteOS设备开发实战大赛》中的试题(2)

举报
张辉 发表于 2020/06/20 12:27:07 2020/06/20
【摘要】 下面来看看试题3: Ø 题目三:闹钟(显示屏+命令下发成功),130分 要求: a)在开发板显示屏上显示闹钟时间,时间可以是假时间。b)开发闹钟闹铃功能,实现可以是烟感扩展板蜂鸣器报警、点亮路灯、或者农业扩展板电机启动等解题思路:1. 显示屏上显示两套时间:当前时间和闹铃时间。这部分只需要调用LCD的相关函数,调整好LCD的显示位置即可。闹钟的显示在LCD_task_entry...

下面来看看试题3:

 Ø 题目三:闹钟(显示屏+命令下发成功),130分

    要求:

    a)在开发板显示屏上显示闹钟时间,时间可以是假时间。

    b)开发闹钟闹铃功能,实现可以是烟感扩展板蜂鸣器报警、点亮路灯、或者农业扩展板电机启动等


解题思路:

1.  显示屏上显示两套时间:当前时间和闹铃时间。这部分只需要调用LCD的相关函数,调整好LCD的显示位置即可。

闹钟的显示在LCD_task_entry任务中做处理。每个10秒钟刷新当前时钟和闹钟。


为了方便起见,还是在云端设置了SetTime和SetAlarm两个下发命令。输入后可以直接在开发板上显示已设置的系统时间和闹铃时间。





2.闹铃功能有两种方式:


(1)直接在设备端控制


一旦闹铃时间达到,则直接驱动Motor启动。当闹铃时间过(例如过了一分钟),则驱动Motor关闭。

新增Alarm_task_entry任务,每隔10秒钟检查当前时间介于闹钟时间~闹钟时间+1分钟之内,如果符合条件,则驱动马达(如已驱动则不管);如不符合条件,则关闭马达。

但这种方法,经过研究和咨询华为售后和小熊派专家,小熊派主板上并没有系统时钟,直接用GetTime()的结果是-1,所以无法利用小熊派本身进行系统时间计算。唯一的方法是定期向服务端申请获取系统时间,再将取回来的时间跟闹铃时间进行比较判断。


但从目前IoTDA提供的上报接口来看,响应数据仅仅提供一个响应码,所以无法通过图形化配置获取系统时间。

image.png


经过进一步咨询,得出的结论是:可以考虑使用使用JavaScript脚本替换图形化配置来获取系统时间。由于这块比较复杂,暂不在本次解题中做处理。


(2)本地不做控制,而是使用现有的命令接口控制设备。

在云端配置规则,当闹钟时间满足时,则下发命令给开发板,开发板收到指令后做打开Motor和关闭Motor处理。


在云端IoTDA增加定时触发的规则,检查当前时间是否闹铃时间,如果符合条件,则下发开启马达命令(如已驱动则不管);检查当前时间是否大于闹钟时间+1分钟,如符合条件,则关闭马达。


在规则中做如下配置:

当闹铃时间到达时通过命令下发驱动灯和马达亮。


结果演示:


时间显示结果如下:




当规则触发时,会亮灯和启动马达,灯亮的情况如下:








【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。