在python中编程温度传感器

时间:2018-02-15 18:02:32

标签: python sensor temperature

我正在尝试为我的温度传感器制作代码。当我尝试执行代码时,卡在NameError上。我的问题是,有没有人知道我做错了什么?

代码:

import datetime
from sense_hat import SenseHat

def hotwater():
    sense = SenseHat()
    sense.clear()
    celcius = round(sense.get_temperature(), 1)

result = 'temp. C' + str(celcius)
print(result)
result_list = [(datetime.datetime.now(), celcius)]

while __name__ == '__main__':
    Hotwater()

错误:

Traceback (most recent call last):
    file "/home/pi/Web_test.py", line 9 in <module>
       results= 'temp. C' + str(celcius)
NameError: name 'celcius' is not defined

2 个答案:

答案 0 :(得分:2)

变量Celsius只能在热水功能中访问。它不能在它之外访问。要解决此问题,您可以将打印移动到热水功能中:

def hotwater():
    sense = SenseHat()
    sense.clear()
    celcius = round(sense.get_temperature(), 1)
    result = 'temp. C' + str(celcius)
    print(result)
    result_list = [(datetime.datetime.now(), celcius)]

hotwater()

或者,你可能有热水回流摄氏度:

def hotwater():
    sense = SenseHat()
    sense.clear()
    celcius = round(sense.get_temperature(), 1)
    return celcius

celcius= hotwater()
result = 'temp. C' + str(celcius)
print(result)
result_list = [(datetime.datetime.now(), celcius)]

虽然您可以使用global关键字在任何地方访问摄像头,但这通常是不受欢迎的。

答案 1 :(得分:1)

您的函数无法将值返回给主程序。 变量celcius [sic]是函数的本地变量。 此外,您无法调用尝试使用该值的函数。

按照学习材料中的示例进行操作:调用函数,将值返回到主程序,并根据需要保存或使用它:

def hotwater():
    sense = SenseHat()
    sense.clear()
    return round(sense.get_temperature(), 1)


if __name__ == '__main__':
    while True:
        celsius = hotwater()
        result = 'temp. C' + str(celcius)
        print(result)
        result_list = [(datetime.datetime.now(), celcius)]

我不确定您对result_list有什么计划,但我认为您需要更新上面的代码。