2015-11-03 120 views
1

做了一個小劇本,我的覆盆子圓周率一旦CPU溫度達到一定點切換風扇,代碼:Python不能正常工作?

import os 
import time 
import RPi.GPIO as GPIO 

GPIO.setmode(GPIO.BCM) 
R = 7 
GPIO.setup(R, GPIO.OUT) 
GPIO.output(R, GPIO.HIGH) 
while True: 
    def getCPUtemperature(): 
     res = os.popen('vcgencmd measure_temp').readline() 
     return res.replace("temp=", "").replace("'C\n", "") 
    CPU = getCPUtemperature() 
    print(CPU) 
    if CPU > 36.0: 
     GPIO.output(R, GPIO.LOW) 
    elif CPU < 30.0: 
     GPIO.output(R, GPIO.HIGH) 

首先,是的,我現在用的繼電器如此之高和低應該像這樣。 雖然控制檯輸出值如29.3,但作品的問題是,風扇仍然運行,程序仍然認爲該值高於36,我不知道爲什麼它沒有意識到該值小於27

有誰知道它爲什麼不起作用?

感謝

+0

安東尼的答案是正確的。我認爲值得注意的是,在Python 3下,''29.9'<30.0'導致一個異常'TypeError:unorderable types:str() msw

回答

2

getCPUtemperature返回的值看起來像它應該被轉換爲float,e.g:下面

def getCPUtemperature(): 
    res = os.popen('vcgencmd measure_temp').readline() 
    return float(res.replace("temp=","").replace("'C\n",""))