2015-11-03 75 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",""))