condition = float(29.0)
while True:
GPIO.output(17, GPIO.HIGH)
if temp_c < condition:
break
值temp_c是一个浮动,并且每秒都在变化。 当temp_c值大于29.0时,我希望GPIO输出处于打开状态。哪里不对?这个python代码有什么问题?它看起来没什么问题
condition = float(29.0)
while True:
GPIO.output(17, GPIO.HIGH)
if temp_c < condition:
break
值temp_c是一个浮动,并且每秒都在变化。 当temp_c值大于29.0时,我希望GPIO输出处于打开状态。哪里不对?这个python代码有什么问题?它看起来没什么问题
您将针脚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)
这里,几件事情必须注意:
while
循环内调用GPIO.output(17, GPIO.HIGH)
一样;while not condition: pass
或while not condition: continue
(pass
是一个空语句)完成。这允许摆脱while True
,这可避免(尽管在特定情况下有时需要)。它不起作用。我第一次跑的时候,别针停留了,第二次没有打开。 – NullCoderExists
您调用输出功能每次如果如果你想要高的值,如果温度高于29更高的温度比29低打破循环:
condition = float(29.0)
while True:
if temp_c > condition:
GPIO.output(17, GPIO.HIGH)
break
不起作用。没有任何反应 – NullCoderExists
您需要打开关闭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
你能做出这样更有效的利用,如果条件移动到while条件,但你必须这样做,请记住您,而其余代码块。
不起作用。当temp_c达到30时,什么都不会发生 – NullCoderExists
'如果temp_c> condition',而不是其他方式 – stevieb
您原来的问题是'当temp_c值大于29.0时,我希望GPIO输出处于打开状态。当temp_c变为低于29.0时,答案会将GPIO引脚变为“off”。 – AbhiramH
虽然我不熟悉GPIO,但它似乎需要更多信息来解决您的问题。 –
'temp_c'被设置在哪里?它在while循环中没有改变。 –