Skip to content

Commit 4b82601

Browse files
authored
Merge pull request #5 from sommersoft/bytearray_fix
Fix bytearray TypeError Issue For Non-Express Boards
2 parents a4897aa + 69d4b17 commit 4b82601

File tree

1 file changed

+10
-11
lines changed

1 file changed

+10
-11
lines changed

adafruit_trellis.py

+10-11
Original file line numberDiff line numberDiff line change
@@ -82,20 +82,20 @@ def __getitem__(self, x):
8282
raise ValueError(('LED number must be between 0 -', self._parent._num_leds - 1))
8383
led = ledLUT[x % 16] >> 4
8484
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)
8787

8888
def __setitem__(self, x, value):
8989
if 0 < x >= self._parent._num_leds:
9090
raise ValueError(('LED number must be between 0 -', self._parent._num_leds - 1))
9191
led = ledLUT[x % 16] >> 4
9292
mask = 1 << (ledLUT[x % 16] & 0x0f)
9393
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
9696
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
9999
else:
100100
raise ValueError("LED value must be True or False")
101101

@@ -105,7 +105,7 @@ def __setitem__(self, x, value):
105105
def fill(self, on):
106106
fill = 0xff if on else 0x00
107107
for buff in range(len(self._parent._i2c_devices)):
108-
for i in range(16):
108+
for i in range(1, 17):
109109
self._parent._led_buffer[buff][i] = fill
110110
if self._parent._auto_show:
111111
self._parent.show()
@@ -136,7 +136,7 @@ def __init__(self, i2c, addresses=None):
136136
self._buttons = []
137137
for i2c_address in addresses:
138138
self._i2c_devices.append(i2c_device.I2CDevice(i2c, i2c_address))
139-
self._led_buffer.append(bytearray(16))
139+
self._led_buffer.append(bytearray(17))
140140
self._buttons.append([bytearray(6), bytearray(6)])
141141
self._num_leds = len(self._i2c_devices) * 16
142142
self._temp = bytearray(1)
@@ -196,10 +196,9 @@ def brightness(self, brightness):
196196

197197
def show(self):
198198
"""Refresh the LED buffer and show the changes."""
199-
temp_led_buffer = bytearray(self._num_leds + 1)
200199
pos = 0
201200
for device in self._i2c_devices:
202-
temp_led_buffer[1:] = self._led_buffer[pos]
201+
temp_led_buffer = bytearray(self._led_buffer[pos])
203202
with device:
204203
device.write(temp_led_buffer)
205204
pos += 1
@@ -224,7 +223,7 @@ def read_buttons(self):
224223
lists: 1 for new button presses, 1 for button relases.
225224
"""
226225
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])
228227
self._write_cmd(_HT16K33_KEY_READ_CMD)
229228
pos = 0
230229
for device in self._i2c_devices:

0 commit comments

Comments
 (0)