aboutsummaryrefslogtreecommitdiff
path: root/NeoRuntime/builtin/strobe/script.py
diff options
context:
space:
mode:
Diffstat (limited to 'NeoRuntime/builtin/strobe/script.py')
-rw-r--r--NeoRuntime/builtin/strobe/script.py34
1 files changed, 34 insertions, 0 deletions
diff --git a/NeoRuntime/builtin/strobe/script.py b/NeoRuntime/builtin/strobe/script.py
new file mode 100644
index 0000000..cd5bffd
--- /dev/null
+++ b/NeoRuntime/builtin/strobe/script.py
@@ -0,0 +1,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.01, max_val=0.5, step=0.01))
+ 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() \ No newline at end of file