Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何做比较值_Python_Python 3.x_Raspberry Pi2 - Fatal编程技术网

Python 如何做比较值

Python 如何做比较值,python,python-3.x,raspberry-pi2,Python,Python 3.x,Raspberry Pi2,我使用(鼓角色)RaspPi:)构建了这个自动化的Aquaponics系统,并利用这个机会学习如何使用Python进行编码。作为我的第一个项目,这是一个惊人的项目,但现在我已经达到了编码极限。在我的生长床上有多个水传感器HC-SR04,当我向其中抽水时,传感器测量距离。如果达到预设距离,则指示泵停止 这是伟大的工作,但我的大脑总是在报警。如果传感器出现故障,会发生什么情况?然后水泵还在抽水,因为水损坏,我给保险公司打了个电话(这是一个室内项目40加仑的水箱) 如果达到以下值之一,我将如何进行编码

我使用(鼓角色)RaspPi:)构建了这个自动化的Aquaponics系统,并利用这个机会学习如何使用Python进行编码。作为我的第一个项目,这是一个惊人的项目,但现在我已经达到了编码极限。在我的生长床上有多个水传感器HC-SR04,当我向其中抽水时,传感器测量距离。如果达到预设距离,则指示泵停止

这是伟大的工作,但我的大脑总是在报警。如果传感器出现故障,会发生什么情况?然后水泵还在抽水,因为水损坏,我给保险公司打了个电话(这是一个室内项目40加仑的水箱)

如果达到以下值之一,我将如何进行编码以使泵停止?水位距传感器4厘米或泵送2分钟

def Pumping_to_Growbed():
print ('')
print ('Pumping water to growbed')
time.sleep(1)
distance = Growbed_Sensor1_Measurement()
print ('Distance ', distance ,'cm')
while distance > 4:
   GPIO.output(RELAY_1, False)
   print ('distance ', distance ,'cm')
   distance = Growbed_Sensor1_Measurement() 
GPIO.output(RELAY_1, True) 
time.sleep(1) 

距离大于4且经过的时间小于120秒时,您要循环。

您只需计算经过的时间,并将检查合并到
while
条件中:

start_t = time.time()

while distance > 4 and (time.time() - start_t < 120):
   ... 
start\u t=time.time()
当距离大于4且(time.time()-start\u t<120)时:
... 

但是,这假设循环将不断循环,并且不会在某个地方被阻塞。如果您在循环中有可能长时间阻塞调用,这将不起作用。

如果您想在2分钟后停止

def Pumping_to_Growbed():
    print ('')
    print ('Pumping water to growbed')
    time.sleep(1)
    distance = Growbed_Sensor1_Measurement()
    start = time()
    print ('Distance ', distance ,'cm')
    while distance > 4:
        GPIO.output(RELAY_1, False)
        print ('distance ', distance ,'cm')
        distance = Growbed_Sensor1_Measurement() 
        if time()-start >= 120:
            break
    GPIO.output(RELAY_1, True) 
    time.sleep(1)

当time()与sleep在同一个包中时,这应该起作用。

或2分钟的泵送时间?我不明白这一点,你能用一种不太专业的“水传感器”语言xD解释一下吗?这看起来很合理。今晚我将尝试它,并验证它是否有效。当距离>4时,我在尝试您的解决方案@Carcigenicate start\u t=time()时遇到此错误,并且(time()-start\u t<120):TypeError:“module”对象不可用callable@franky29您是否先导入
时间
模块?是。时间模块是在我的代码开始时导入的,否则我相信我将无法使用时间。睡眠(1)对吗?@franky29对。然后使用
time.time()
。我试试看。谢谢