condition = float(29.0)
while True:
GPIO.output(17, GPIO.HIGH)
if temp_c < condition:
break
值temp_c是一个浮点数并且每秒都会改变。 当temp_c值大于29.0时,我希望GPIO输出打开。有什么问题?
答案 0 :(得分:0)
您将17
针设置为HIGH
,但不会返回LOW
。
达到条件时,您需要将其明确设置为低级别:
while True:
GPIO.output(17, GPIO.HIGH)
if temp_c < condition:
GPIO.output(17, GPIO.LOW)
break
但执行流程并不是很好。 以下情况会更好:
GPIO.output(17, GPIO.HIGH)
while temp_c >= condition:
pass
GPIO.output(17, GPIO.LOW)
在这里,必须注意以下几点:
GPIO.output(17, GPIO.HIGH)
循环内调用while
一样; while not condition: pass
完成,或while not condition: continue
(pass
是一个空语句)。这允许摆脱while True
,这是最好避免的(虽然有时在特定情况下需要)。答案 1 :(得分:0)
每次调用输出函数,如果温度低于29,则断开循环。如果温度高于29,则需要高值:
condition = float(29.0)
while True:
if temp_c > condition:
GPIO.output(17, GPIO.HIGH)
break
答案 2 :(得分:0)
您需要关闭GPIO引脚才能看到任何变化。
以下是您问题的即时解决方法:
if temp_c < condition:
GPIO.output(17, GPIO.LOW)
break
但是您不必在每次迭代时设置引脚状态。更有效地实现您想要的是:
condition = float(29.0)
GPIO.output(17, GPIO.HIGH)
while True :
if temp_c < condition :
GPIO.output(17, GPIO.LOW)
break
您可以通过将if条件移动到while条件来提高效率,但是您必须记住其余的代码块。