收藏官网首页
查看: 3320|回复: 0

[经验分享] 通过机智云模拟定时开关灯功能

106

主题

107

帖子

7264

积分

论坛元老

Rank: 8Rank: 8

积分
7264
跳转到指定楼层
楼主
 楼主| 发表于 2023-8-9 22:08:55 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
免费使用STM32、APP自动代码生成工具
本帖最后由 mmuyu 于 2023-8-9 22:10 编辑

    现在,是否拥有定时功能已经成为大部分人选购智能设备所考虑的方面了,这一功能赋予设备更强大的灵活性和便携性。我们可以根据自己的日程或者安排利用定时功能实现设备的自动控制,不仅节省我们的时间和精力,还大大提高了生活的便利性和舒适性。

下面我们看一下如何实现一个定时的功能。首先我们要定时就要有时间,通过机智云的文档我们可以得知机智云提供了返回设备自开机以来的毫秒数,我们可以用此实现定时功能。

添加两个数据点,用于测试。

开关用于控制是否开启定时,时间这里我设置以30分钟为最小值,180分钟为最大值

接下来,编写代码,首先定义两个静态变量用于存放定时时间和开启定时的时间,当然这里使用1个变量也是可以的,毕竟可以从datapoint获取变量值

之后,我们要到事件处理函数里,为我们按钮状态和数值改变编写具体要执行的功能。
当开启定时功能时,我们要记录下此时的时间

当定时时间改变的时候我们要修改变量的值

接下来,具体的定时时间判断我们在userhandle里编写,userhandle会从启动之后一直执行。

为了节省cpu资源,我们可以以2秒为间隔判断,当然也可以把这里的代码放在freertos的任务里运行,再由freertos的延时控制这样更节省cpu
这里我的userhandle是在freertos的任务里无延时,因此加一个2秒的间隔判断
首先,        if(currentDataPoint.valueTIME_ONOFF) 只有在按钮被开启的时候才会执行对应的代码,当定时功能开启后,以2秒为间隔判断当前的时间减去开启定时功能的时间是否大于定时时间 ,如果已经超过对应的时间,那么就执行对应功能,并且同时关闭定时功能。
这个实际也不好演示,因此我们使用串口输出数据模拟一下。

我们可以看到,剩余时间以2000毫秒左右减少。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

版权与免责声明 © 2006-2024 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )

快速回复 返回顶部 返回列表