micropython按键检测_MicroPython智慧农业大棚监测控制系统程序设计

Dht11.py:

import pyb

from pyb import UART

from pyb import Pin,delay,udelay

import time

class DHT11:

def __init__(self,pin_name):

time.sleep(1)

self.N1 = Pin(pin_name, Pin.OUT_PP)

self.PinName=pin_name

pyb.delay(10)

def read_data(self):

self.__init__(self.PinName)

data=[]

j=0

N1=self.N1

N1.low()

delay(20)

N1.high()

N1 = Pin(self.PinName, Pin.IN)

udelay(30)

if N1.value() != 0:

return [0,0]

while N1.value()==0:

continue

while N1.value()==1:

continue

while j<40:

k=0

while N1.value()==0:

continue

while N1.value()==1:

k+=1

if k>100:break

if k<3:

data.append(0)

else:

data.append(1)

j=j+1

print('Sensor is working')

j=0

humidity_bit=data[0:8]

humidity_point_bit=data[8:16]

temperature_bit=data[16:24]

temperature_point_bit=data[24:32]

check_bit=data[32:40]

humidity=0

humidity_point=0

temperature=0

temperature_point=0

check=0

for i in range(8):

humidity+=humidity_bit[i]*2**(7-i)

humidity_point+=humidity_point_bit[i]*2**(7-i)

temperature+=temperature_bit[i]*2**(7-i)

temperature_point+=temperature_point_bit[i]*2**(7-i)

check+=check_bit[i]*2**(7-i)

tmp=humidity+humidity_point+temperature+temperature_point

if check==tmp:

print('temperature is',temperature,'-wet is',humidity,'%')

else:

print('Error:',humidity,humidity_point,temperature,temperature_point,check)

return [str(temperature),str(humidity)]

# main.py

import pyb

from pyb import Pin

Pin_All=[Pin(p,Pin.OUT_PP) for p in ['X1','X2','X3','X4']]

STEPER_ROUND=512 #转动一圈(360度)的周期

ANGLE_PER_ROUND=STEPER_ROUND/360 #转动1度的周期

class SteperMotor():

def __init__(self,pin = None,speed=2):

if pin != None:

self.Pins = pin

else:

self.Pins = Pin_All

self.Speed =  speed

#私有方法

def __SteperWriteData(self,data):

count=0

for i in data:

self.Pins[count].value(i)

count+=1

def __SteperFrontTurn(self):

speed = self.Speed

self.__SteperWriteData([1,1,0,0])

pyb.delay(speed)

self.__SteperWriteData([0,1,1,0])

pyb.delay(speed)

self.__SteperWriteData([0,0,1,1])

pyb.delay(speed)

self.__SteperWriteData([1,0,0,1])

pyb.delay(speed)

def __SteperBackTurn(self):

speed = self.Speed

self.__SteperWriteData([1,1,0,0])

pyb.delay(speed)

self.__SteperWriteData([1,0,0,1])

pyb.delay(speed)

self.__SteperWriteData([0,0,1,1])

pyb.delay(speed)

self.__SteperWriteData([0,1,1,0])

pyb.delay(speed)

def __SteperStop(self):

self.__SteperWriteData([0,0,0,0])

def steperRun(self,angle):

val=ANGLE_PER_ROUND*abs(angle)

if(angle>0):

for i in range(0,val):

self.__SteperFrontTurn()

else:

for i in range(0,val):

self.__SteperBackTurn()

angle = 0

self.__SteperStop()

温湿度main:

from pyb import Pin

from pyb import ADC

from stepermotor import SteperMotor

from dht11 import DHT11

#0:亮 1:暗

light = Pin('X22',Pin.IN)

#0:湿 1:干

hum = Pin('Y11',Pin.IN)

dht = DHT11('Y12')

#继电器低电平触发

water = Pin('X12',Pin.OUT_PP)

fan = Pin('X11',Pin.OUT_PP)

water.value(1)

fan.value(1)

#步进电机

Pin_All=[Pin(p,Pin.OUT_PP) for p in ['X21','X20','X19','X18']]

#转速(ms) 数值越大转速越慢 最小值2ms

sm = SteperMotor(pin = Pin_All,speed=2)

hood = False #记录遮光罩的状态,默认是关闭

def readTaHData():

DATA = dht.read_data()#读取温湿度的值

print(DATA[0],'℃')

print(DATA[1],'%')

#温度大于25度,打开风扇,进行通风

if int(DATA[0]) > 21:

fan.value(0)

else:

fan.value(1)

if __name__ == '__main__':

while True:

readTaHData()

h_d = hum.value()

print('hum:',h_d)

if h_d:

#土壤较干,打开抽水泵进行浇水

water.value(0)

else:

#土壤较湿,关闭抽水泵停止浇水

water.value(1)

l_d = light.value()

print('light:',l_d)

if l_d:

#光线较暗,启动步进电机,关闭大棚的遮光罩

if hood:

sm.steperRun(-360)

sm.steperRun(-360)

hood = False

else:

#光线较亮,启动步进电机,打开大棚的遮光罩

if not hood:

sm.steperRun(360)

sm.steperRun(360)

hood = True

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值