查看: 10776|回复: 4

【开发日记10】+智能花盆+手动/自动模式控制

[复制链接]

19

主题

110

帖子

361

积分

中级会员

Rank: 3Rank: 3

积分
361
发表于 2018-10-27 10:20:51 | 显示全部楼层 |阅读模式
智能花盆
一、本节目标
通过设置两种状态,来控制水泵的开关,手动模式或自动模式。当手动模式的时候,开关由用户通过onenet的应用开关控制,当自动模式的时候,用户设置一个阈值,当当前值低于土壤湿度的阈值的时候则启动水泵。
二、本节实现设想
通过设置两个标志位,用一个if来判断,确定是手动模式还是自动模式,再分别执行水泵的开与关状态。还需要把当前的开关状态,标志位状态,上传到平台上,这样才能让用户直接看到开关的状态。
三、具体代码实现
1.     首先我们要定义三个全局的变量,和定义最大最小的阈值一模一样,同时将这些作为数据流也要上传到平台上,三个全局变量分别是:手动模式标志state,0为手动模式,1为自动模式。水泵开关标志wat,1为开,0为关0,yuzhi为自动模式下,当前值小于这个yuzhi就启动水泵,否则关闭水泵。
1.png
然后添加到数据流发送平台,全局变量的方法,前面日记都有。

2.     现在我们编写手动模式和自动模式下的水泵控制,首先是两个函数
2.png
第一个函数为自动模式,第二个函数为手动模式,参数的话,前面都介绍过,主要是当前值tuhumi,土壤湿度的阈值的最大值:tuhumu_max。现在我们具体编写函数
3.png

这就是两个函数的原型。很简单,state为1时,自动模式,当前值小于阈值,并且阈值是小于最大的土壤湿度的值才能执行成功(湿度越湿,对应的百分比是越高的)我相信大家很轻易就能看懂代码,这都是非常简单的if操作。
3.     最后,我们同样把这两个函数放在main中的while(1)里面循环去监测就可以啦。

4.     这三个状态同样是受平台控制的,所以我们的命令下发同样包含这样的命令
4.png
由于是全局变量,所以发生改变之后,在下一次执行检测的时候,就能做出改变,当然,我这是选择了一种最简单方法,大家最容易理解的方法,大家对能实现这个功能然后使用更先进的方法的话,请在留言告诉我哈。
四、手把手教大家编程
到这里,我们的项目配置,功能实现,都已经全部完成了。接下来我们要准备请编写应用,做好界面端。OneNET提供了我们很好的平台,我们在里面创建应用是非常简单简单的事情。

下节预告:由于我们的功能都初步完成了,接下来我们在实测的时候,就出现一些需要优化的地方,所以下一节我给大家解决一些需要优化的问题,再编辑我们的应用。


回复

举报

1

主题

11

帖子

37

积分

新手上路

Rank: 1

积分
37
发表于 2018-11-10 19:40:26 | 显示全部楼层
大佬真厉害,有没有什么联系方式可以请教一下

19

主题

110

帖子

361

积分

中级会员

Rank: 3Rank: 3

积分
361
 楼主| 发表于 2018-11-11 18:51:22 | 显示全部楼层
清风自来 发表于 2018-11-10 19:40
大佬真厉害,有没有什么联系方式可以请教一下

我i在的呀

0

主题

4

帖子

12

积分

新手上路

Rank: 1

积分
12
发表于 2019-3-31 19:03:13 | 显示全部楼层
水泵怎么连接啊,一开电源,水泵就开始转,代码对水泵没有控制作用

19

主题

110

帖子

361

积分

中级会员

Rank: 3Rank: 3

积分
361
 楼主| 发表于 2019-4-13 00:39:50 | 显示全部楼层
刘烁 发表于 2019-3-31 19:03
水泵怎么连接啊,一开电源,水泵就开始转,代码对水泵没有控制作用

继电器控制,你要接对一个公共端,另个端,如果不对就反一下非公共端
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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