diff options
author | Jakob Stendahl <14180120+JakobST1n@users.noreply.github.com> | 2021-10-11 20:02:04 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-10-11 20:02:04 +0200 |
commit | c67531161e56488166a33232f87566309ba8676e (patch) | |
tree | 846e59a020e80bea48557d5a06af5728e44961ff /NeoRuntime/builtin/strandtest | |
parent | e6880cd8ccf82d993f222cb14b4860581654acb8 (diff) | |
parent | c1b6eec770b885a9829e1f62bad5cc99389ca429 (diff) | |
download | Luxcena-Neo-c67531161e56488166a33232f87566309ba8676e.tar.gz Luxcena-Neo-c67531161e56488166a33232f87566309ba8676e.zip |
Merge pull request #24 from JakobST1n/rebuild
v1.0.0
Diffstat (limited to 'NeoRuntime/builtin/strandtest')
-rw-r--r-- | NeoRuntime/builtin/strandtest/script.py | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/NeoRuntime/builtin/strandtest/script.py b/NeoRuntime/builtin/strandtest/script.py new file mode 100644 index 0000000..50bac1e --- /dev/null +++ b/NeoRuntime/builtin/strandtest/script.py @@ -0,0 +1,74 @@ +from luxcena_neo import NeoBehaviour, utils +import time + +def colorWipe(*color, wait_ms=50): + """Wipe color across display a pixel at a time.""" + for i in range(strip.num_pixels()): + strip.set_pixel_color(i, *color) + strip.show() + time.sleep(wait_ms/1000.0) + +def theaterChase(*color, wait_ms=50, iterations=10): + """Movie theater light style chaser animation.""" + for j in range(iterations): + for q in range(3): + for i in range(0, strip.num_pixels(), 3): + strip.set_pixel_color(i+q, *color) + strip.show() + time.sleep(wait_ms/1000.0) + for i in range(0, strip.num_pixels(), 3): + strip.set_pixel_color(i+q, 0) + +def wheel(pos): + """Generate rainbow colors across 0-255 positions.""" + if pos < 85: + return (pos * 3, 255 - pos * 3, 0) + elif pos < 170: + pos -= 85 + return (255 - pos * 3, 0, pos * 3) + else: + pos -= 170 + return (0, pos * 3, 255 - pos * 3) + +def rainbow(wait_ms=20, iterations=1): + """Draw rainbow that fades across all pixels at once.""" + for j in range(256*iterations): + for i in range(strip.num_pixels()): + strip.set_pixel_color(i, wheel((i+j) & 255)) + strip.show() + time.sleep(wait_ms/1000.0) + +def rainbowCycle(wait_ms=20, iterations=5): + """Draw rainbow that uniformly distributes itself across all pixels.""" + for j in range(256*iterations): + for i in range(strip.num_pixels()): + strip.set_pixel_color(i, wheel(int((i * 256 // strip.num_pixels()) + j) & 255)) + strip.show() + time.sleep(wait_ms/1000.0) + +def theaterChaseRainbow(wait_ms=50): + """Rainbow movie theater light style chaser animation.""" + for j in range(256): + for q in range(3): + for i in range(0, strip.num_pixels(), 3): + strip.set_pixel_color(i+q, wheel((i+j) % 255)) + strip.show() + time.sleep(wait_ms/1000.0) + for i in range(0, strip.num_pixels(), 3): + strip.set_pixel_color(i+q, 0) + +class Main(NeoBehaviour): + + def on_start(self): + colorWipe(*(255, 0, 0)) # Red wipe + colorWipe(*(0, 255, 0)) # Blue wipe + colorWipe(*(0, 0, 255)) # Green wipe + + while True: + theaterChase(*(127, 127, 127)) # White theater chase + theaterChase(*(127, 0, 0)) # Red theater chase + theaterChase(*( 0, 0, 127)) # Blue theater chase + + rainbow() + rainbowCycle() + theaterChaseRainbow() |