aboutsummaryrefslogtreecommitdiff
path: root/NeoRuntime/builtin/strobe/script.py
blob: 5d05bbdf56519fc30a78183f456c7ed29c8d69e8 (plain) (blame)
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
from luxcena_neo import NeoBehaviour, FloatVariable, IntegerVariable, ColorVariable, BooleanVariable
from time import perf_counter

class Main(NeoBehaviour):

    def declare_variables(self):
        self.declare(FloatVariable("delay", 0.07, min_val=0.000001, max_val=0.5, step=0.000001))
        self.declare(IntegerVariable("pause", 20, min_val=1, max_val=60))
        self.declare(IntegerVariable("strobe count", 10, min_val=1, max_val=100))
        self.declare(ColorVariable("color", "#fafafa"))

    def on_start(self):
        self.strobe_enabled = False
        self.strobe_on = False
        self.strobe_c  = 0
        self.last_inst = perf_counter()

    def each_tick(self):
        if (perf_counter() - self.last_inst) > (self.var["delay"].value if self.strobe_enabled else self.var["pause"].value):
            if not self.strobe_enabled: self.strobe_enabled = True
            self.strobe_c += 1
            set_all(self.var["color"].value if self.strobe_on else 0)
            self.strobe_on = not self.strobe_on
            if self.strobe_c >= (self.var["strobe count"].value * 2):
                self.strobe_c = 0
                self.strobe_enabled = False
                self.strobe_on = False
                set_all(0)
            self.last_inst = perf_counter()
            
def set_all(*color):
    for i in range(strip.num_pixels()):
        strip.set_pixel_color(i, *color)
    strip.show()