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

Python中8×8温度阵列映射OLED屏的冗余代码简化问题

8×8温度阵列示例

优化思路

你的代码冗余核心是硬编码了所有64个点位的绘制逻辑,完全可以通过规律总结用循环实现,同时还能优化屏幕刷新效率,避免手写出错:

  1. 抽离所有固定参数:把网格坐标、温度阈值都定义为常量,后续调整无需修改逻辑代码
  2. 用两层循环遍历8行8列的所有点位,通过行号*8 + 列号对应温度数组的索引,替代逐个写索引的写法
  3. 调整刷新逻辑:原来每画一个矩形就刷新一次屏幕,不仅性能低还容易闪屏,统一画完所有矩形后再刷新一次即可
  4. 规避硬编码bug:你现有代码中第二行第5个点位(索引12)的else分支就写错了Y坐标,用循环逻辑不会出现这类低级错误

优化后代码

# 提前定义每列的左右X坐标、每行的上下Y坐标,和你原有坐标规则完全一致
COL_X = [(80,85), (85,91), (91,97), (97,103), (103,109), (109,115), (115,121), (121,126)]
ROW_Y = [(1,8), (8,16), (16,24), (24,32), (32,40), (40,48), (48,56), (56,64)]
# 温度阈值,后续调整阈值直接修改此处即可
TEMP_THRESHOLD = 27

def Correlate(Num):
    while True:
        Update_Temperature_Data = Read_raw_temp()
        # 修正原代码笔误:原print的变量名为Temperature_Data,和前面定义的变量名不一致
        print(Update_Temperature_Data)
        
        # 遍历所有8行
        for row in range(8):
            y_top, y_bottom = ROW_Y[row]
            # 遍历当前行的8列
            for col in range(8):
                x_left, x_right = COL_X[col]
                # 计算当前点位对应的温度数组索引
                temp_idx = row * 8 + col
                # 根据温度判断填充值
                fill_val = 1 if Update_Temperature_Data[temp_idx] > TEMP_THRESHOLD else 0
                # 绘制对应矩形
                draw.rectangle((x_left, y_top, x_right, y_bottom), fill=fill_val, outline=0)
        
        # 所有点位绘制完成后统一刷新屏幕
        disp.image(image)
        disp.display()

说明

这段代码的功能和你原有手写逻辑完全一致,代码量缩减了90%以上,后续如果要调整坐标、修改温度阈值,只需要修改前面的常量即可,维护成本大幅降低。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 23:54:00