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