智能花盆 一、本节目标 通过设置两种状态,来控制水泵的开关,手动模式或自动模式。当手动模式的时候,开关由用户通过onenet的应用开关控制,当自动模式的时候,用户设置一个阈值,当当前值低于土壤湿度的阈值的时候则启动水泵。 二、本节实现设想 通过设置两个标志位,用一个if来判断,确定是手动模式还是自动模式,再分别执行水泵的开与关状态。还需要把当前的开关状态,标志位状态,上传到平台上,这样才能让用户直接看到开关的状态。 三、具体代码实现 1. 首先我们要定义三个全局的变量,和定义最大最小的阈值一模一样,同时将这些作为数据流也要上传到平台上,三个全局变量分别是:手动模式标志state,0为手动模式,1为自动模式。水泵开关标志wat,1为开,0为关0,yuzhi为自动模式下,当前值小于这个yuzhi就启动水泵,否则关闭水泵。 然后添加到数据流发送平台,全局变量的方法,前面日记都有。
2. 现在我们编写手动模式和自动模式下的水泵控制,首先是两个函数 第一个函数为自动模式,第二个函数为手动模式,参数的话,前面都介绍过,主要是当前值tuhumi,土壤湿度的阈值的最大值:tuhumu_max。现在我们具体编写函数
这就是两个函数的原型。很简单,state为1时,自动模式,当前值小于阈值,并且阈值是小于最大的土壤湿度的值才能执行成功(湿度越湿,对应的百分比是越高的)我相信大家很轻易就能看懂代码,这都是非常简单的if操作。 3. 最后,我们同样把这两个函数放在main中的while(1)里面循环去监测就可以啦。
4. 这三个状态同样是受平台控制的,所以我们的命令下发同样包含这样的命令 由于是全局变量,所以发生改变之后,在下一次执行检测的时候,就能做出改变,当然,我这是选择了一种最简单方法,大家最容易理解的方法,大家对能实现这个功能然后使用更先进的方法的话,请在留言告诉我哈。 四、手把手教大家编程 到这里,我们的项目配置,功能实现,都已经全部完成了。接下来我们要准备请编写应用,做好界面端。OneNET提供了我们很好的平台,我们在里面创建应用是非常简单简单的事情。
下节预告:由于我们的功能都初步完成了,接下来我们在实测的时候,就出现一些需要优化的地方,所以下一节我给大家解决一些需要优化的问题,再编辑我们的应用。
|