You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

树莓派LCD显示BME280传感器数据报错:变量temperatura未定义

解决BME280传感器数据显示的NameError问题

错误原因

screen.py中尝试直接调用temperatura变量,但该变量是bme280_sensor.py里update_sensor_data函数内声明的模块内部全局变量,无法跨模块直接访问,因此抛出NameError: name 'temperatura' is not defined。

解决方案

方案一:使用函数返回的字典数据(推荐)

直接利用update_sensor_data函数返回的字典获取温度值,无需依赖全局变量,代码更健壮:
修改screen.py的循环部分:

while(True):
    sensor_data = update_sensor_data()
    mylcd.lcd_display_string("Temp: %d%sC" % (sensor_data['temperatura'], chr(223)), 1)
    sleep(1)

方案二:暴露模块级全局变量

如果一定要用全局变量的方式,需要先在bme280_sensor.py中把temperatura定义为模块级变量:

# 在文件中bme280.load_calibration_params之后添加初始化
temperatura = 0.0

def update_sensor_data():
    global temperatura
    bme280_data = bme280.sample(bus,address)
    temperatura = round(bme280_data.temperature)
    data = {
        'humitat': round(bme280_data.humidity),
        'pressio': round(bme280_data.pressure),
        'temperatura': temperatura
    }
    return data

然后在screen.py中导入该变量:

from bme280_sensor import update_sensor_data, temperatura

之后就能在循环中正常使用temperatura变量。

内容的提问来源于stack exchange,提问作者Tridox25

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 05:02:16