diff --git a/adafruit_trellis.py b/adafruit_trellis.py index af0a16e..d1350d7 100644 --- a/adafruit_trellis.py +++ b/adafruit_trellis.py @@ -82,8 +82,8 @@ def __getitem__(self, x): raise ValueError(('LED number must be between 0 -', self._parent._num_leds - 1)) led = ledLUT[x % 16] >> 4 mask = 1 << (ledLUT[x % 16] & 0x0f) - return bool(((self._parent._led_buffer[x // 16][led * 2] | \ - self._parent._led_buffer[x // 16][(led * 2) + 1] << 8) & mask) > 0) + return bool(((self._parent._led_buffer[x // 16][(led * 2) + 1] | \ + self._parent._led_buffer[x // 16][(led * 2) + 2] << 8) & mask) > 0) def __setitem__(self, x, value): if 0 < x >= self._parent._num_leds: @@ -91,11 +91,11 @@ def __setitem__(self, x, value): led = ledLUT[x % 16] >> 4 mask = 1 << (ledLUT[x % 16] & 0x0f) if value: - self._parent._led_buffer[x // 16][led * 2] |= mask - self._parent._led_buffer[x // 16][(led * 2) + 1] |= mask >> 8 + self._parent._led_buffer[x // 16][(led * 2) + 1] |= mask + self._parent._led_buffer[x // 16][(led * 2) + 2] |= mask >> 8 elif not value: - self._parent._led_buffer[x // 16][led * 2] &= ~mask - self._parent._led_buffer[x // 16][(led * 2) + 1] &= ~mask >> 8 + self._parent._led_buffer[x // 16][(led * 2) + 1] &= ~mask + self._parent._led_buffer[x // 16][(led * 2) + 2] &= ~mask >> 8 else: raise ValueError("LED value must be True or False") @@ -105,7 +105,7 @@ def __setitem__(self, x, value): def fill(self, on): fill = 0xff if on else 0x00 for buff in range(len(self._parent._i2c_devices)): - for i in range(16): + for i in range(1, 17): self._parent._led_buffer[buff][i] = fill if self._parent._auto_show: self._parent.show() @@ -136,7 +136,7 @@ def __init__(self, i2c, addresses=None): self._buttons = [] for i2c_address in addresses: self._i2c_devices.append(i2c_device.I2CDevice(i2c, i2c_address)) - self._led_buffer.append(bytearray(16)) + self._led_buffer.append(bytearray(17)) self._buttons.append([bytearray(6), bytearray(6)]) self._num_leds = len(self._i2c_devices) * 16 self._temp = bytearray(1) @@ -196,10 +196,9 @@ def brightness(self, brightness): def show(self): """Refresh the LED buffer and show the changes.""" - temp_led_buffer = bytearray(self._num_leds + 1) pos = 0 for device in self._i2c_devices: - temp_led_buffer[1:] = self._led_buffer[pos] + temp_led_buffer = bytearray(self._led_buffer[pos]) with device: device.write(temp_led_buffer) pos += 1 @@ -224,7 +223,7 @@ def read_buttons(self): lists: 1 for new button presses, 1 for button relases. """ for i in range(len(self._buttons)): - self._buttons[i][0][:] = self._buttons[i][1][:] + self._buttons[i][0] = bytearray(self._buttons[i][1]) self._write_cmd(_HT16K33_KEY_READ_CMD) pos = 0 for device in self._i2c_devices: