38
38
39
39
# Pixel color order constants
40
40
RGB = (0 , 1 , 2 )
41
+ """Red Green Blue"""
41
42
GRB = (1 , 0 , 2 )
43
+ """Green Red Blue"""
42
44
RGBW = (0 , 1 , 2 , 3 )
45
+ """Red Green Blue White"""
43
46
GRBW = (1 , 0 , 2 , 3 )
47
+ """Green Red Blue White"""
44
48
45
49
class NeoPixel :
46
50
"""
@@ -53,6 +57,7 @@ class NeoPixel:
53
57
brightness
54
58
:param bool auto_write: True if the neopixels should immediately change when set. If False,
55
59
`show` must be called explicitly.
60
+ :param tuple pixel_order: Set the pixel color channel order. GRBW is set by default.
56
61
57
62
Example for Circuit Playground Express:
58
63
@@ -82,18 +87,16 @@ class NeoPixel:
82
87
pixels[::2] = [RED] * (len(pixels) // 2)
83
88
time.sleep(2)
84
89
"""
85
- #ORDER = (1, 0, 2, 3)
86
90
def __init__ (self , pin , n , * , bpp = 3 , brightness = 1.0 , auto_write = True , pixel_order = None ):
87
91
self .pin = digitalio .DigitalInOut (pin )
88
92
self .pin .direction = digitalio .Direction .OUTPUT
89
93
self .n = n
90
- #self.bpp = bpp
91
94
if pixel_order is None :
92
- self .ORDER = GRBW
95
+ self .order = GRBW
93
96
self .bpp = bpp
94
97
else :
95
- self .ORDER = pixel_order
96
- self .bpp = len (self .ORDER )
98
+ self .order = pixel_order
99
+ self .bpp = len (self .order )
97
100
self .buf = bytearray (self .n * self .bpp )
98
101
# Set auto_write to False temporarily so brightness setter does _not_
99
102
# call show() while in __init__.
@@ -144,11 +147,11 @@ def _set_item(self, index, value):
144
147
r , g , b = value
145
148
else :
146
149
r , g , b , w = value
147
- self .buf [offset + self .ORDER [0 ]] = r
148
- self .buf [offset + self .ORDER [1 ]] = g
149
- self .buf [offset + self .ORDER [2 ]] = b
150
+ self .buf [offset + self .order [0 ]] = r
151
+ self .buf [offset + self .order [1 ]] = g
152
+ self .buf [offset + self .order [2 ]] = b
150
153
if self .bpp == 4 :
151
- self .buf [offset + self .ORDER [3 ]] = w
154
+ self .buf [offset + self .order [3 ]] = w
152
155
153
156
def __setitem__ (self , index , val ):
154
157
if isinstance (index , slice ):
@@ -170,15 +173,15 @@ def __getitem__(self, index):
170
173
if isinstance (index , slice ):
171
174
out = []
172
175
for in_i in range (* index .indices (len (self .buf ) // self .bpp )):
173
- out .append (tuple (self .buf [in_i * self .bpp + self .ORDER [i ]]
176
+ out .append (tuple (self .buf [in_i * self .bpp + self .order [i ]]
174
177
for i in range (self .bpp )))
175
178
return out
176
179
if index < 0 :
177
180
index += len (self )
178
181
if index >= self .n or index < 0 :
179
182
raise IndexError
180
183
offset = index * self .bpp
181
- return tuple (self .buf [offset + self .ORDER [i ]]
184
+ return tuple (self .buf [offset + self .order [i ]]
182
185
for i in range (self .bpp ))
183
186
184
187
def __len__ (self ):
0 commit comments