diff --git a/neopixel.py b/neopixel.py index 7b7261b..f4f3b49 100644 --- a/neopixel.py +++ b/neopixel.py @@ -131,6 +131,8 @@ def _set_item(self, index, value): b = 0 w = 0 if isinstance(value, int): + if value>>24: + raise ValueError("only bits 0->23 valid for integer input") r = value >> 16 g = (value >> 8) & 0xff b = value & 0xff @@ -142,11 +144,11 @@ def _set_item(self, index, value): r = 0 g = 0 b = 0 - elif len(value) == self.bpp: - if self.bpp == 3: - r, g, b = value - else: - r, g, b, w = value + elif (len(value) == self.bpp) or ((len(value) == 3) and (self.bpp == 4)): + r, g, b, w = value if len(value) == 4 else value+(0,) + else: + raise ValueError("Color tuple size does not match pixel_order.") + self.buf[offset + self.order[0]] = r self.buf[offset + self.order[1]] = g self.buf[offset + self.order[2]] = b