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循環中沒有改變。 –