我有一组显示板,我想将其视为一个逻辑显示器。 每个显示器有4位数字。library I'm using为每个显示板创建一个对象实例。按原样使用库,我最终得到了三块板的三个实例:
display0 = segments_gpio.Seg14x8(i2c,0)
display1 = segments_gpio.Seg14x8(i2c,1)
display2 = segments_gpio.Seg14x8(i2c,2)
要写入这些板,我可以使用如下代码:
display0[0] = '0'
display0[1] = '1'
display0[3] = '2'
display1[0] = 'A'
display1[1] = 'B'
display1[3] = 'C'
这可以很好地编译和运行,但有明显的局限性。我正在尝试创建一个多显示类,它允许我编写如下代码
char = 65 # 'A'
for disp in range(0,3):
for digit in range(0,4):
displays[disp][digit] = char
char += 1
或者,更好的是:
char = 65 # sequence from letter 'A'
for digit in range(0,12):
displays[digit] = char
char += 1
我试着像这样创建multidisplay类:
class mdisplay(segments_gpio.Seg14x8(i2c)):
displayset = []
def __init__():
for x in range(0,3):
print ("create display ",x)
# instantiate display and append to displayset
displayset.append(segments_gpio.Seg14x8(i2c,x))
目的是在displayset中创建一个显示对象数组
我将其实例化如下:
mydisplays = mdisplay(i2c)
像这样引用它
for z in range(0,3):
mydisplays[z][0] = chr(z+48)
mydisplays[z][1] = chr(z+65)
mydisplays[z][3] = chr(z+97)
这会在导入的库中产生错误,在我使用非对象方法访问显示时不会发生这些错误:
self.disp_d0 = (dispID & 1) != 0
TypeError: unsupported operand type(s) for &: 'tuple' and 'int'
我怀疑我声明的类不正确,但我不确定在哪里
编辑2020-09-06-使用不同的方法继续前进。我并不真的需要一个新的类,但我只想能够处理多个显示和数字与变量,如列表或数组
我找到了this article,,它显示了如何创建对象实例列表: 以此为指导,我有以下工作代码:
display = []
display.append(segments_gpio.Seg14x8(i2c,0))
display.append(segments_gpio.Seg14x8(i2c,1))
display.append(segments_gpio.Seg14x8(i2c,2))
charnum = 33
for boardindex in range(0,3):
display[boardindex].fill(0)
display[boardindex].brightness = .2
for digitindex in range(0,8):
display[boardindex][digitindex] = chr(charnum)
charnum += 1;
从这里开始,下一个增强将是使显示器可寻址,使用单个索引表示3块板(每个板8位)组合显示器中的数字
display[singledigitindex] = chr(charnum)
第一个索引值是进入显示列表的索引。第二个索引是Seg14x8类中显示对象实例的一部分。如何将它们结合起来
目前没有回答
相关问题 更多 >
编程相关推荐