-
Notifications
You must be signed in to change notification settings - Fork 0
/
ws_led.py
executable file
·99 lines (77 loc) · 2.29 KB
/
ws_led.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
from machine import Pin
from neopixel import NeoPixel
import urandom
import math
from time import sleep
class WS():
def __init__(self, number=8):
self.np = NeoPixel(Pin(13), number)
self.sat = 1
self.val = 0.2
self.number = number
print("espws - diody ws2812: .alloff .random(ile,co ile) .allcolors .linijka(kolor) .dioda(nr, color)")
def hsvtorgb(self, h, s, v):
h = float(h)
s = float(s)
v = float(v)
h60 = h / 60.0
h60f = math.floor(h60)
hi = int(h60f) % 6
f = h60 - h60f
p = v * (1 - s)
q = v * (1 - f * s)
t = v * (1 - (1 - f) * s)
r, g, b = 0, 0, 0
if hi == 0:
r, g, b = v, t, p
elif hi == 1:
r, g, b = q, v, p
elif hi == 2:
r, g, b = p, v, t
elif hi == 3:
r, g, b = p, q, v
elif hi == 4:
r, g, b = t, p, v
elif hi == 5:
r, g, b = v, p, q
r, g, b = int(r * 255), int(g * 255), int(b * 255)
return r, g, b
def test(self):
self.np[0] = (255, 0, 0)
self.np[1] = (0, 255, 0)
self.np[2] = (0, 0, 255)
self.np.write()
sleep(10)
self.np[0] = (0, 0, 0)
self.np[1] = (0, 0, 0)
self.np[2] = (0, 0, 0)
self.np.write()
def alloff(self):
for i in range(self.number):
self.np[i] = (0,0,0)
self.np.write()
def random(self, t, okres):
while t > 0:
for i in range(self.number):
h = urandom.getrandbits(8)
self.np[i] = self.hsvtorgb(h, self.sat, self.val)
self.np.write()
sleep(okres)
t -= 1
self.alloff()
def allcolors(self):
c = 0
while c < 360:
for i in range(self.number):
h = c + i*5
self.np[i] = self.hsvtorgb(h, self.sat, self.val)
self.np.write()
sleep(0.05)
c += 5
def linijka(self, color):
for i in range(self.number):
self.np[i] = self.hsvtorgb(color, self.sat, self.val)
self.np.write()
def dioda(self, nr, color):
self.np[nr] = self.hsvtorgb(color, self.sat, self.val)
self.np.write()