Skip to content

Commit 607131d

Browse files
committed
Update to the latest version from upstream which adds RGBW support and lays the foundation for pixel ordering.
1 parent 93c2a89 commit 607131d

File tree

1 file changed

+12
-13
lines changed

1 file changed

+12
-13
lines changed

neopixel.py

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,12 @@
55
from neopixel_write import neopixel_write
66

77
class NeoPixel:
8-
def __init__(self, pin, n):
8+
ORDER = (1, 0, 2, 3)
9+
def __init__(self, pin, n, bpp=3):
910
self.pin = nativeio.DigitalInOut(pin)
1011
self.n = n
11-
self.buf = bytearray(n * 3)
12+
self.bpp = bpp
13+
self.buf = bytearray(n * bpp)
1214
self.pin.switch_to_output()
1315

1416
def __enter__(self):
@@ -18,21 +20,18 @@ def __exit__(self, exception_type, exception_value, traceback):
1820
self.pin.deinit()
1921

2022
def __setitem__(self, index, val):
21-
r, g, b = val
22-
self.buf[index * 3] = g
23-
self.buf[index * 3 + 1] = r
24-
self.buf[index * 3 + 2] = b
23+
offset = index * self.bpp
24+
for i in range(self.bpp):
25+
self.buf[offset + self.ORDER[i]] = val[i]
2526

2627
def __getitem__(self, index):
27-
i = index * 3
28-
return self.buf[i + 1], self.buf[i], self.buf[i + 2]
28+
offset = index * self.bpp
29+
return tuple(self.buf[offset + self.ORDER[i]]
30+
for i in range(self.bpp))
2931

3032
def fill(self, color):
31-
r, g, b = color
32-
for i in range(len(self.buf) / 3):
33-
self.buf[i * 3] = g
34-
self.buf[i * 3 + 1] = r
35-
self.buf[i * 3 + 2] = b
33+
for i in range(self.n):
34+
self[i] = color
3635

3736
def write(self):
3837
neopixel_write(self.pin, self.buf, True)

0 commit comments

Comments
 (0)