Skip to content

Commit 5812855

Browse files
authored
Merge pull request #72 from jfurcean/fix-brightness
Fix NeoPixel brightness bug
2 parents db8ed66 + 78a7a4c commit 5812855

File tree

1 file changed

+12
-1
lines changed

1 file changed

+12
-1
lines changed

adafruit_seesaw/neopixel.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ def __init__(
8080
self._seesaw.write(_NEOPIXEL_BASE, _NEOPIXEL_PIN, cmd)
8181
cmd = struct.pack(">H", n * self._bpp)
8282
self._seesaw.write(_NEOPIXEL_BASE, _NEOPIXEL_BUF_LENGTH, cmd)
83+
self._pre_brightness_color = [None] * n
8384

8485
@property
8586
def brightness(self):
@@ -90,8 +91,16 @@ def brightness(self):
9091
def brightness(self, brightness):
9192
# pylint: disable=attribute-defined-outside-init
9293
self._brightness = min(max(brightness, 0.0), 1.0)
93-
if self.auto_write:
94+
95+
# Suppress auto_write while updating brightness.
96+
current_auto_write = self.auto_write
97+
self.auto_write = False
98+
for i in range(self._n):
99+
if self._pre_brightness_color[i] is not None:
100+
self[i] = self._pre_brightness_color[i]
101+
if current_auto_write:
94102
self.show()
103+
self.auto_write = current_auto_write
95104

96105
def deinit(self):
97106
pass
@@ -114,6 +123,8 @@ def __setitem__(self, key, color):
114123
else:
115124
r, g, b, w = color
116125

126+
self._pre_brightness_color[key] = color
127+
117128
# If all components are the same and we have a white pixel then use it
118129
# instead of the individual components.
119130
if self._bpp == 4 and r == g == b and w == 0:

0 commit comments

Comments
 (0)