核心思想、硬件控制部分的代码要和从软件系统逻辑中剥离出来!
一、需求分析
花盆内土壤湿度较低时,控制水泵进行浇水。
二、系统设计
有空补充。
三、模拟代码
1、普通版
import time
class zdjh:
def __init__(self):
#湿度越大,数值越大
self.humidity_max = 500
#湿度变量模拟
self.humidity_tmp = 300
#模拟得到当前湿度
#实际使用从湿度传感器读取数据
def get_humidity(self):
return self.humidity_tmp
#模拟控制水泵开关
#实际使用通过和水泵继电器连接的端口设置高低电平来控制开关
def water_pump(self, action):
if action == "open":
print("水泵打开")
elif action == "close":
print("水泵关闭")
else:
print("不能识别的指令.")
def loop(self):
while True:
humidity = self.get_humidity()
print("当前湿度:{0}".format(humidity))
#如果湿度大于阈值则浇水2秒
if humidity < self.humidity_max:
self.water_pump("open")
time.sleep(2)
self.water_pump("close")
self.humidity_tmp = self.humidity_tmp + 200 #模拟浇水2秒后湿度增加200
else:
print(humidity)
#每10秒检查湿度一次
for i in range(1, 10):
time.sleep(1)
print(".", end="", flush=True)
print("")
self.humidity_tmp = self.humidity_tmp - 50 #模拟10秒后湿度减50
def main():
jh = zdjh()
jh.loop()
if __name__ == '__main__':
main()
2、异步IO版
有空补充。
四、硬件控制小用例编写
1、获取土壤湿度
有空补充。
2、控制水泵浇水
有空补充。
五、最终代码
有空补充。