
基本上,我让这个8x8数组网格以摄氏度为单位显示温度值,如上面的网格所示。我正在从红外传感器上读取这些值。到目前为止,我已经实现了我的目标,即能够读取温度较高的感应值,并在OLED屏幕上显示与像素大小相关的矩形。大约相同的大小,你可以在上图中看到。我把我的代码放在下面:
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语句,对于后面的行也是同样的过程。但是这看起来确实太单调乏味了,而且有很多代码要讲。我需要帮助找到一种方法来缩短代码,并使其变得更简单,因为它是重复的。如果能帮上忙就好了?
发布于 2021-11-14 08:38:49
这就是我会做的。它不是您的代码的完整版本,您必须修改它以满足您的需求。
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)https://stackoverflow.com/questions/69957517
复制相似问题