diff --git a/pyleds/program/siinus/Gaynbow.py b/pyleds/program/siinus/Gaynbow.py new file mode 100644 index 0000000..be691d4 --- /dev/null +++ b/pyleds/program/siinus/Gaynbow.py @@ -0,0 +1,33 @@ +from lib.Program import Program +from rpi_ws281x import Color +import time + + +def name(): + return 'RGBT Gaynbow' + + +def wheel(pos): + """Generate rainbow colors across 0-255 positions.""" + if pos < 85: + return Color(pos * 3, 255 - pos * 3, 0) + elif pos < 170: + pos -= 85 + return Color(255 - pos * 3, 0, pos * 3) + else: + pos -= 170 + return Color(0, pos * 3, 255 - pos * 3) + + +class Gaynbow(Program): + def run(self, args: [] = None): + wait_ms = 20 + iterations = 5 + while self.get_loop().status(): + """Draw rainbow that uniformly distributes itself across all pixels.""" + for j in range(256 * iterations): + for i in range(self._lm.count_pixels()): + self._lm.set_pixel_color(i, wheel( + (int(i * 256 / self._lm.count_pixels()) + j) & 255)) + self._lm.show() + time.sleep(wait_ms / 1000.0)