Skip to content

Commit ef6edc4

Browse files
committed
Add support for CP versions < 5
1 parent f363100 commit ef6edc4

File tree

1 file changed

+28
-20
lines changed

1 file changed

+28
-20
lines changed

neopixel.py

Lines changed: 28 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -30,26 +30,32 @@
3030
* Author(s): Damien P. George, Scott Shawcroft, Carter Nelson, Roy Hooper
3131
"""
3232

33+
# pylint: disable=ungrouped-imports
34+
import sys
3335
import digitalio
3436
from neopixel_write import neopixel_write
35-
try:
36-
import _pixelbuf
37-
except ImportError:
37+
38+
if sys.implementation.version[0] < 5:
3839
import adafruit_pypixelbuf as _pixelbuf
40+
else:
41+
try:
42+
import _pixelbuf
43+
except ImportError:
44+
import adafruit_pypixelbuf as _pixelbuf
3945

4046

4147
__version__ = "0.0.0-auto.0"
4248
__repo__ = "https://github.com/adafruit/Adafruit_CircuitPython_NeoPixel.git"
4349

4450

4551
# Pixel color order constants
46-
RGB = 'RGB'
52+
RGB = "RGB"
4753
"""Red Green Blue"""
48-
GRB = 'GRB'
54+
GRB = "GRB"
4955
"""Green Red Blue"""
50-
RGBW = 'RGBW'
56+
RGBW = "RGBW"
5157
"""Red Green Blue White"""
52-
GRBW = 'GRBW'
58+
GRBW = "GRBW"
5359
"""Green Red Blue White"""
5460

5561

@@ -111,25 +117,20 @@ class NeoPixel(_pixelbuf.PixelBuf):
111117
Overall brightness of the pixel (0 to 1.0)
112118
113119
"""
114-
bpp = None
115-
n = 0
116-
117-
def __init__(self, pin, n, *, bpp=3, brightness=1.0, auto_write=True, pixel_order=None):
118-
self.bpp = bpp
119-
self.n = n
120120

121+
def __init__(
122+
self, pin, n, *, bpp=3, brightness=1.0, auto_write=True, pixel_order=None
123+
):
121124
if not pixel_order:
122125
pixel_order = GRB if bpp == 3 else GRBW
123126
else:
124-
self.bpp = bpp = len(pixel_order)
125127
if isinstance(pixel_order, tuple):
126-
order_chars = RGBW
127-
order = []
128-
for char_no, order in enumerate(pixel_order):
129-
order[pixel_order] = order_chars[char_no]
130-
pixel_order = ''.join(order)
128+
order_list = [RGBW[order] for order in pixel_order]
129+
pixel_order = "".join(order_list)
131130

132-
super().__init__(n, brightness=brightness, byteorder=pixel_order, auto_write=auto_write)
131+
super().__init__(
132+
n, brightness=brightness, byteorder=pixel_order, auto_write=auto_write
133+
)
133134

134135
self.pin = digitalio.DigitalInOut(pin)
135136
self.pin.direction = digitalio.Direction.OUTPUT
@@ -149,6 +150,13 @@ def __exit__(self, exception_type, exception_value, traceback):
149150
def __repr__(self):
150151
return "[" + ", ".join([str(x) for x in self]) + "]"
151152

153+
@property
154+
def n(self):
155+
"""
156+
The number of neopixels in the chain (read-only)
157+
"""
158+
return len(self)
159+
152160
def write(self):
153161
""".. deprecated: 1.0.0
154162

0 commit comments

Comments
 (0)