Skip to content

Commit ce47724

Browse files
committed
Updated RGBLED class for no reason at all...
1 parent 44ec538 commit ce47724

File tree

1 file changed

+27
-11
lines changed

1 file changed

+27
-11
lines changed

firmware/frozen/pimoroni.py

Lines changed: 27 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -143,23 +143,39 @@ def is_pressed(self):
143143

144144
class RGBLED:
145145
def __init__(self, r, g, b, invert=True):
146-
self.invert = invert
147-
self.led_r = PWM(Pin(r))
148-
self.led_r.freq(1000)
149-
self.led_g = PWM(Pin(g))
150-
self.led_g.freq(1000)
151-
self.led_b = PWM(Pin(b))
152-
self.led_b.freq(1000)
146+
self.led_r = PWM(Pin(r), freq=1000, duty_u16=0, invert=invert)
147+
self.led_g = PWM(Pin(g), freq=1000, duty_u16=0, invert=invert)
148+
self.led_b = PWM(Pin(b), freq=1000, duty_u16=0, invert=invert)
153149

154150
def set_rgb(self, r, g, b):
155-
if self.invert:
156-
r = 255 - r
157-
g = 255 - g
158-
b = 255 - b
159151
self.led_r.duty_u16(int((r * 65535) / 255))
160152
self.led_g.duty_u16(int((g * 65535) / 255))
161153
self.led_b.duty_u16(int((b * 65535) / 255))
162154

155+
def set_hsv(self, h, s, v):
156+
if s == 0.0:
157+
v = int(v * 255)
158+
self.set_rgb(v, v, v)
159+
else:
160+
i = int(h * 6.0)
161+
f = (h * 6.0) - i
162+
p, q, t = v * (1.0 - s), v * (1.0 - s * f), v * (1.0 - s * (1.0 - f))
163+
v, t, p, q = int(v * 255), int(t * 255), int(p * 255), int(q * 255)
164+
165+
i = i % 6
166+
if i == 0:
167+
self.set_rgb(v, t, p)
168+
elif i == 1:
169+
self.set_rgb(q, v, p)
170+
elif i == 2:
171+
self.set_rgb(p, v, t)
172+
elif i == 3:
173+
self.set_rgb(p, q, v)
174+
elif i == 4:
175+
self.set_rgb(t, p, v)
176+
elif i == 5:
177+
self.set_rgb(v, p, q)
178+
163179

164180
# A simple class for handling Proportional, Integral & Derivative (PID) control calculations
165181
class PID:

0 commit comments

Comments
 (0)