def run(self, start: int, end: int, red: int, green: int, blue: int, eye_size: int, delay: int, return_delay: int): led_max = int(math.floor((end - eye_size) / 2)) for i in range(start, led_max): Helper.set_all(self.strip, Color(0, 0, 0)) self.strip.setPixelColor( i, Color(int(math.floor(red / 10)), int(math.floor(green / 10)), int(math.floor(blue / 10))) ) for j in range(1, eye_size + 1): self.strip.setPixelColor(i + j, Color(red, green, blue)) self.strip.setPixelColor( i + eye_size + 1, Color(int(math.floor(red / 10)), int(math.floor(green / 10)), int(math.floor(blue / 10))) ) self.strip.setPixelColor( end - i, Color(int(math.floor(red / 10)), int(math.floor(green / 10)), int(math.floor(blue / 10))) ) for j in range(1, eye_size + 1): self.strip.setPixelColor(end - i - j, Color(red, green, blue)) self.strip.setPixelColor( end - i - eye_size - 1, Color(int(math.floor(red / 10)), int(math.floor(green / 10)), int(math.floor(blue / 10))) ) self.strip.show() await asyncio.sleep(delay) await asyncio.sleep(return_delay)
async def chaos_fill_down(self, start: int, end: int, speed: int, display: int, pause: int, flush: int): Helper.set_in_range(self.strip, start, end, Color(0, 0, 0)) # Fill down with random colors for i in range(start, end): r = random.randint(0, 255) g = random.randint(0, 255) b = random.randint(0, 255) for j in range(start, end - i): self.strip.setPixelColor(j, Color(r, g, b)) if j > 0: self.strip.setPixelColor(j - 1, Color(0, 0, 0)) await asyncio.sleep(speed / 1000) self.strip.show() await asyncio.sleep(display / 1000) await asyncio.sleep(pause / 1000) # "Flush" results for i in range(end - 1, -1, -1): for j in range(end - 1, 0, -1): old_color = self.strip.getPixelColor(j - 1) self.strip.setPixelColor(j, old_color) self.strip.setPixelColor(i - end + 1, Color(0, 0, 0)) self.strip.show() await asyncio.sleep(flush / 1000) await asyncio.sleep(pause / 1000)
def twinkle(self, red: int, green: int, blue: int, iterations: int, delay: float, only_one: bool): Helper.set_all(self.strip, Color(0, 0, 0)) for i in range(0, iterations): self.strip.setPixelColor( random.randrange(0, self.strip.numPixels()), Color(red, green, blue)) self.strip.show() time.sleep(delay) if only_one: Helper.set_all(strip, Color(0, 0, 0)) time.sleep(delay)
async def snow_sparkle( self, start: int, end: int, red: int, green: int, blue: int, sparkle_delay: float, delay: float ): Helper.set_in_range(self.strip, start, end, Color(red, green, blue)) pixel = random.randrange(start, end) self.strip.setPixelColor(pixel, Color(255, 255, 255)) self.strip.show() # await asyncio.sleep(sparkle_delay) self.strip.setPixelColor(pixel, Color(red, green, blue)) self.strip.show()
async def strobe(self, red: int, green: int, blue: int, iterations: int, flashes_delay: float, end_pause: int): for i in range(0, iterations): Helper.set_all(self.strip, Color(red, green, blue)) self.strip.show() await asyncio.sleep(flashes_delay) Helper.set_all(self.strip, Color(0, 0, 0)) self.strip.show() await asyncio.sleep(flashes_delay) await asyncio.sleep(end_pause)
def twinkle_random(self, iterations: int, delay: float, only_one: bool): Helper.set_all(self.strip, Color(0, 0, 0)) for i in range(0, iterations): self.strip.setPixelColor( random.randrange(0, self.strip.numPixels()), Color(random.randrange(0, 256), random.randrange(0, 256), random.randrange(0, 256))) self.strip.show() time.sleep(delay) if only_one: Helper.set_all(self.strip, Color(0, 0, 0)) time.sleep(delay)
def fade_in_out(self, red: int, green: int, blue: int): # Fade In for i in range(0, 256): r = int(math.floor((i / 256.0) * red)) g = int(math.floor((i / 256.0) * green)) b = int(math.floor((i / 256.0) * blue)) Helper.set_all(self.strip, Color(r, g, b)) self.strip.show() # Fade Out. for i in range(256, 0, -1): r = int(math.floor((i / 256.0) * red)) g = int(math.floor((i / 256.0) * green)) b = int(math.floor((i / 256.0) * blue)) Helper.set_all(self.strip, Color(r, g, b)) self.strip.show()
async def meteor_rain(self, start: int, end: int, red: int, green: int, blue: int, size: int, trail_decay: int, random_decay: bool, wait_ms: int): Helper.set_in_range(self.strip, start, end, Color(0, 0, 0)) for i in range(start, end): # Fade brightness all LEDs one step for j in range(start, end): if (not random_decay) or (random.randint(0, 10) > 5): Helper.fade_to_black(self.strip, j, trail_decay) # Draw meteor for j in range(start, start + size): if ((i - j + start) < end) and ((i - j) >= 0): self.strip.setPixelColor(i - j + start, Color(red, green, blue)) self.strip.show() await asyncio.sleep(wait_ms / 1000)
def fade_rgb(self, iterations: int = 3): for i in range(0, iterations): # Fade In for j in range(0, 256): if i == 0: Helper.set_all(self.strip, Color(j, 0, 0)) elif i == 1: Helper.set_all(self.strip, Color(0, j, 0)) elif i == 2: Helper.set_all(self.strip, Color(0, 0, j)) self.strip.show() # Fade Out for j in range(256, 0, -1): if i == 0: Helper.set_all(self.strip, Color(j, 0, 0)) elif i == 1: Helper.set_all(self.strip, Color(0, j, 0)) elif i == 2: Helper.set_all(self.strip, Color(0, 0, j)) self.strip.show()
async def paint_range_in_one_color(self, start: int, end: int, red: int = 255, green: int = 255, blue: int = 255): Helper.set_in_range(self.strip, start, end, Color(red, green, blue))