@@ -82,20 +82,20 @@ def __getitem__(self, x):
82
82
raise ValueError (('LED number must be between 0 -' , self ._parent ._num_leds - 1 ))
83
83
led = ledLUT [x % 16 ] >> 4
84
84
mask = 1 << (ledLUT [x % 16 ] & 0x0f )
85
- return bool (((self ._parent ._led_buffer [x // 16 ][led * 2 ] | \
86
- self ._parent ._led_buffer [x // 16 ][(led * 2 ) + 1 ] << 8 ) & mask ) > 0 )
85
+ return bool (((self ._parent ._led_buffer [x // 16 ][( led * 2 ) + 1 ] | \
86
+ self ._parent ._led_buffer [x // 16 ][(led * 2 ) + 2 ] << 8 ) & mask ) > 0 )
87
87
88
88
def __setitem__ (self , x , value ):
89
89
if 0 < x >= self ._parent ._num_leds :
90
90
raise ValueError (('LED number must be between 0 -' , self ._parent ._num_leds - 1 ))
91
91
led = ledLUT [x % 16 ] >> 4
92
92
mask = 1 << (ledLUT [x % 16 ] & 0x0f )
93
93
if value :
94
- self ._parent ._led_buffer [x // 16 ][led * 2 ] |= mask
95
- self ._parent ._led_buffer [x // 16 ][(led * 2 ) + 1 ] |= mask >> 8
94
+ self ._parent ._led_buffer [x // 16 ][( led * 2 ) + 1 ] |= mask
95
+ self ._parent ._led_buffer [x // 16 ][(led * 2 ) + 2 ] |= mask >> 8
96
96
elif not value :
97
- self ._parent ._led_buffer [x // 16 ][led * 2 ] &= ~ mask
98
- self ._parent ._led_buffer [x // 16 ][(led * 2 ) + 1 ] &= ~ mask >> 8
97
+ self ._parent ._led_buffer [x // 16 ][( led * 2 ) + 1 ] &= ~ mask
98
+ self ._parent ._led_buffer [x // 16 ][(led * 2 ) + 2 ] &= ~ mask >> 8
99
99
else :
100
100
raise ValueError ("LED value must be True or False" )
101
101
@@ -105,7 +105,7 @@ def __setitem__(self, x, value):
105
105
def fill (self , on ):
106
106
fill = 0xff if on else 0x00
107
107
for buff in range (len (self ._parent ._i2c_devices )):
108
- for i in range (16 ):
108
+ for i in range (1 , 17 ):
109
109
self ._parent ._led_buffer [buff ][i ] = fill
110
110
if self ._parent ._auto_show :
111
111
self ._parent .show ()
@@ -136,7 +136,7 @@ def __init__(self, i2c, addresses=None):
136
136
self ._buttons = []
137
137
for i2c_address in addresses :
138
138
self ._i2c_devices .append (i2c_device .I2CDevice (i2c , i2c_address ))
139
- self ._led_buffer .append (bytearray (16 ))
139
+ self ._led_buffer .append (bytearray (17 ))
140
140
self ._buttons .append ([bytearray (6 ), bytearray (6 )])
141
141
self ._num_leds = len (self ._i2c_devices ) * 16
142
142
self ._temp = bytearray (1 )
@@ -196,10 +196,9 @@ def brightness(self, brightness):
196
196
197
197
def show (self ):
198
198
"""Refresh the LED buffer and show the changes."""
199
- temp_led_buffer = bytearray (self ._num_leds + 1 )
200
199
pos = 0
201
200
for device in self ._i2c_devices :
202
- temp_led_buffer [ 1 :] = self ._led_buffer [pos ]
201
+ temp_led_buffer = bytearray ( self ._led_buffer [pos ])
203
202
with device :
204
203
device .write (temp_led_buffer )
205
204
pos += 1
@@ -224,7 +223,7 @@ def read_buttons(self):
224
223
lists: 1 for new button presses, 1 for button relases.
225
224
"""
226
225
for i in range (len (self ._buttons )):
227
- self ._buttons [i ][0 ][:] = self ._buttons [i ][1 ][:]
226
+ self ._buttons [i ][0 ] = bytearray ( self ._buttons [i ][1 ])
228
227
self ._write_cmd (_HT16K33_KEY_READ_CMD )
229
228
pos = 0
230
229
for device in self ._i2c_devices :
0 commit comments