首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与python中OLED屏幕上的打印相关的8×8数组

与python中OLED屏幕上的打印相关的8×8数组
EN

Stack Overflow用户
提问于 2021-11-13 19:24:21
回答 1查看 33关注 0票数 0

基本上,我让这个8x8数组网格以摄氏度为单位显示温度值,如上面的网格所示。我正在从红外传感器上读取这些值。到目前为止,我已经实现了我的目标,即能够读取温度较高的感应值,并在OLED屏幕上显示与像素大小相关的矩形。大约相同的大小,你可以在上图中看到。我把我的代码放在下面:

代码语言:javascript
复制
def Correlate(Num):
  while True:
    Update_Temperature_Data = Read_raw_temp()
    print(Temperature_Data)
    
    ##########################First-Row########################
    if Update_Temperature_Data[0] > 27:
        draw.rectangle((80,1,85,8), fill=1, outline=0)
        disp.image(image)
        disp.display()
    else:
        draw.rectangle((80,1,85,8), outline=0, fill=0)
         
    if Update_Temperature_Data[1] > 27:
        draw.rectangle((85,1,91,8), fill=1, outline=0)
        disp.image(image)
        disp.display()
    else:
        draw.rectangle((85,1,91,8), outline=0, fill=0)
         
    if Update_Temperature_Data[2] > 27:
        draw.rectangle((91,1,97,8), fill=1, outline=0)
        disp.image(image)
        disp.display()
    else:
        draw.rectangle((91,1,97,8), outline=0, fill=0)
        
    if Update_Temperature_Data[3] > 27:
        draw.rectangle((97,1,103,8), fill=1, outline=0)
        disp.image(image)
        disp.display()
    else:
        draw.rectangle((97,1,103,8), outline=0, fill=0)
    
    if Update_Temperature_Data[4] > 27:
        draw.rectangle((103,1,109,8), fill=1, outline=0)
        disp.image(image)
        disp.display()
     else:
         draw.rectangle((103,1,109,8), outline=0, fill=0)
         
    if Update_Temperature_Data[5] > 27:
        draw.rectangle((109,1,115,8), fill=1, outline=0)
        disp.image(image)
        disp.display()
    else:
        draw.rectangle((109,1,115,8), outline=0, fill=0)
        
    if Update_Temperature_Data[6] > 27:
        draw.rectangle((115,1,121,8), fill=1, outline=0)
        disp.image(image)
        disp.display()
    else:
        draw.rectangle((115,1,121,8), outline=0, fill=0)

        
    if Update_Temperature_Data[7] > 27:
        draw.rectangle((121,1,126,8), fill=1, outline=0)
        disp.image(image)
        disp.display()
    else:
        draw.rectangle((121,1,126,8), outline=0, fill=0)
        
    ######################Second-Row#############################
    if Update_Temperature_Data[8] > 27:
        draw.rectangle((80,8,85,16), fill=1, outline=0)
        disp.image(image)
        disp.display()
    else:
        draw.rectangle((80,8,85,16), outline=0, fill=0)

    if Update_Temperature_Data[9] > 27:
        draw.rectangle((85,8,91,16), fill=1, outline=0)
        disp.image(image)
        disp.display()
    else:
        draw.rectangle((85,8,91,16), outline=0, fill=0)

    if Update_Temperature_Data[10] > 27:
        draw.rectangle((91,8,97,16), fill=1, outline=0)
        disp.image(image)
        disp.display()
    else:
        draw.rectangle((91,8,97,16), outline=0, fill=0)

    if Update_Temperature_Data[11] > 27:
        draw.rectangle((97,8,103,16), fill=1, outline=0)
        disp.image(image)
        disp.display()
    else:
        draw.rectangle((97,8,103,16), outline=0, fill=0)

    if Update_Temperature_Data[12] > 27:
        draw.rectangle((103,8,109,16), fill=1, outline=0)
        disp.image(image)
        disp.display()
    else:
        draw.rectangle((103,1,109,16), outline=0, fill=0)

    if Update_Temperature_Data[13] > 27:
        draw.rectangle((109,8,115,16), fill=1, outline=0)
        disp.image(image)
        disp.display()
    else:
        draw.rectangle((109,8,115,16), outline=0, fill=0)

    if Update_Temperature_Data[14] > 27:
        draw.rectangle((115,8,121,16), fill=1, outline=0)
        disp.image(image)
        disp.display()
    else:
        draw.rectangle((115,8,121,16), outline=0, fill=0)

    if Update_Temperature_Data[15] > 27:
        draw.rectangle((121,8,126,16), fill=1, outline=0)
        disp.image(image)
        disp.display()
    else:
        draw.rectangle((121,8,126,16), outline=0, fill=0)

如您所见,我对前两行使用了一组if-else语句,对于后面的行也是同样的过程。但是这看起来确实太单调乏味了,而且有很多代码要讲。我需要帮助找到一种方法来缩短代码,并使其变得更简单,因为它是重复的。如果能帮上忙就好了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-14 08:38:49

这就是我会做的。它不是您的代码的完整版本,您必须修改它以满足您的需求。

代码语言:javascript
复制
  def Correlate(Num):
      Row1recs = {0:"""80,1,85,8""",1:"""85,1,91,8""",2:"""91,1,97,8""",3:"""97,1,103,8""",4:"""103,1,109,8""",}
      Row2recs = {0:"""80,1,85,8"""}
      elserecsrow1 = {0:"""103,1,109,8"""}
      elserecsrow2 = {0:"""103,1,109,8"""}
      while True:
          Update_Temperature_Data = Read_raw_temp()
          print(Temperature_Data)
          for i in Update_Temperature_Data:
              if Update_Temperature_Data[i] > 27:
                  draw.rectangle((eval(Row1recs[i])), fill=1, outline=0)
                  disp.image(image)
                  disp.display()
              else:
                  draw.rectangle((eval(Row2recs[i])), outline=0, fill=0)
              if Update_Temperature_Data[i] > 27:
                  draw.rectangle((eval(elserecsrow1[i])), fill=1, outline=0)
                  disp.image(image)
                  disp.display()
              else:
                  draw.rectangle((eval(elserecsrow2[i])), outline=0, fill=0)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69957517

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档