Exemplo n.º 1
0
def color_wipe(strip, queue, color, delay, max_brightness=255):
    strip.setBrightness(max_brightness)
    for i in range(strip.numPixels()):
        strip.setPixelColorRGB(i, *color)
        strip.show()
        if not q_poll_milli_sleep(delay, queue):
            return
    for i in range(strip.numPixels()):
        strip.setPixelColorRGB(i, 0, 0, 0)
        strip.show()
        if not q_poll_milli_sleep(delay, queue):
            return
def color_wipe(strip, queue, color, delay, brightness_manager, *args,
               **kwargs):
    while True:
        brightness_manager.reset_brightness()
        for i in range(strip.numPixels()):
            strip.setPixelColorRGB(i, *color)
            strip.show()
            if not q_poll_milli_sleep(delay, queue):
                return
        for i in range(strip.numPixels()):
            strip.setPixelColorRGB(i, 0, 0, 0)
            strip.show()
            if not q_poll_milli_sleep(delay, queue):
                return
def color_wipe_2(strip, queue, color, delay, brightness_manager, *args,
                 **kwargs):
    def set_pixel(pixel, pixel_color):
        strip.setPixelColorRGB(pixel, *pixel_color)
        strip.show()

    brightness_manager.reset_brightness()
    while True:
        for i in range(strip.numPixels()):
            set_pixel(i, color)
            if not q_poll_milli_sleep(delay, queue):
                return
        for i in reversed(range(strip.numPixels())):
            set_pixel(i, (0, 0, 0))
            if not q_poll_milli_sleep(delay, queue):
                return
Exemplo n.º 4
0
def bounce(strip, queue, color, delay, max_brightness=255):
    red, green, blue = color
    size = 3
    for direction in DIRECTIONS:
        for i in (
            range(0, (strip.numPixels() - size - 2))
            if direction == "forward"
            else range((strip.numPixels() - size - 2), 0, -1)
        ):
            solid_color(
                strip, queue, (0, 0, 0), max_brightness=max_brightness, wait=False
            )
            strip.setPixelColorRGB(
                i,
                *(
                    int(math.floor(red / 10)),
                    int(math.floor(green / 10)),
                    int(math.floor(blue / 10)),
                )
            )
            for j in range(1, (size + 1)):
                strip.setPixelColorRGB(i + j, *(red, green, blue))
            strip.setPixelColorRGB(
                i + size + 1,
                *(
                    int(math.floor(red / 10)),
                    int(math.floor(green / 10)),
                    int(math.floor(blue / 10)),
                )
            )
            strip.show()
            if not q_poll_milli_sleep(delay, queue):
                return
Exemplo n.º 5
0
def rainbow_cycle(strip, queue, color, delay, max_brightness=255):
    strip.setBrightness(max_brightness)
    for j in range(256):
        for i in range(strip.numPixels()):
            strip.setPixelColorRGB(
                i, *wheel((int(i * 256 / strip.numPixels()) + j) & 255)
            )
        strip.show()
        if not q_poll_milli_sleep(delay, queue):
            return
def rainbow_cycle(strip, queue, color, delay, brightness_manager, *args,
                  **kwargs):
    while True:
        brightness_manager.reset_brightness()
        for j in range(256):
            for i in range(strip.numPixels()):
                strip.setPixelColorRGB(
                    i, *wheel((int(i * 256 / strip.numPixels()) + j) & 255))
            strip.show()
            if not q_poll_milli_sleep(delay, queue):
                return
Exemplo n.º 7
0
def blink(strip, queue, color, delay, max_brightness=255):
    solid_color(strip, queue, color, delay, max_brightness, wait=False)
    for direction in DIRECTIONS:
        strip.setBrightness(max_brightness if direction == "forward" else 0)
        strip.show()
        for ms in range(
            int(delay / 2)
        ):  # We do it this way so we can check the q more often, as for blink
            if not q_poll_milli_sleep(
                2, queue
            ):  # delay may be high. Otherwise the effect may end up blocking the
                return  # server, when settings are saved, or it shuts down.
Exemplo n.º 8
0
def random_single(strip, queue, color, delay, max_brightness=255):
    strip.setBrightness(max_brightness)
    for p in range(strip.numPixels()):
        strip.setPixelColorRGB(p, *wheel(random.randint(0, 255)))
    strip.show()
    while True:
        strip.setPixelColorRGB(
            random.randint(0, strip.numPixels()), *wheel(random.randint(0, 255))
        )
        strip.show()
        if not q_poll_milli_sleep(delay, queue):
            return
def bouncy_balls(strip, queue, color, delay, brightness_manager, *args,
                 **kwargs):
    brightness_manager.reset_brightness()
    ball_count = 2
    gravity = -9.81
    start_height = 1

    height = []
    impact_velocity_start = math.sqrt(-2 * gravity * start_height)
    impact_velocity = []
    time_since_last_bounce = []
    position = []
    clock_time_since_last_bounce = []
    dampening = []

    for i in range(ball_count):
        clock_time_since_last_bounce.append(time.time() * 1000)
        time_since_last_bounce.append(0)
        height.append(start_height)
        position.append(0)
        impact_velocity.append(impact_velocity_start)
        dampening.append(0.9 - (i / math.pow(ball_count, 2)))

    while True:
        for i in range(ball_count):
            time_since_last_bounce[i] = (time.time() * 1000 -
                                         clock_time_since_last_bounce[i])
            height[i] = (
                0.5 * gravity * math.pow(time_since_last_bounce[i] / 1000, 2) +
                impact_velocity[i] * time_since_last_bounce[i] / 1000)

            if height[i] < 0:
                height[i] = 0
                impact_velocity[i] = dampening[i] * impact_velocity[i]
                clock_time_since_last_bounce[i] = time.time() * 1000

                if impact_velocity[i] < 0.01:
                    impact_velocity[i] = impact_velocity_start

            position[i] = int(
                round(height[i] * (strip.numPixels() - 1) / start_height))

        for p in range(strip.numPixels()):
            # Set to blank
            strip.setPixelColorRGB(p, 0, 0, 0)

        for i in range(ball_count):
            # Light pixels that should be lit
            strip.setPixelColorRGB(position[i], *color)

        strip.show()
        if not q_poll_milli_sleep(delay, queue):
            return
Exemplo n.º 10
0
def random_single(strip, queue, color, delay, brightness_manager, *args,
                  **kwargs):
    while True:
        brightness_manager.reset_brightness()
        for p in range(strip.numPixels()):
            strip.setPixelColorRGB(p, *wheel(random.randint(0, 255)))
        strip.show()
        while True:
            strip.setPixelColorRGB(random.randint(0, strip.numPixels()),
                                   *wheel(random.randint(0, 255)))
            strip.show()
            if not q_poll_milli_sleep(delay, queue):
                return
Exemplo n.º 11
0
def rainbow(strip, queue, color, delay, brightness_manager, *args, **kwargs):
    while True:
        for i in range(256):
            solid_color(
                strip=strip,
                queue=queue,
                color=wheel(i),
                delay=delay,
                wait=False,
                brightness_manager=brightness_manager,
            )
            if not q_poll_milli_sleep(delay, queue):
                return
Exemplo n.º 12
0
def rainbow(strip, queue, color, delay, max_brightness=255):
    strip.setBrightness(max_brightness)
    for i in range(256):
        solid_color(
            strip,
            queue,
            wheel(i),
            delay,
            max_brightness,
            set_brightness=False,
            wait=False,
        )
        if not q_poll_milli_sleep(delay, queue):
            return
Exemplo n.º 13
0
def color_wipe_2(strip, queue, color, delay, max_brightness=255):
    strip.setBrightness(max_brightness)
    for direction in DIRECTIONS:
        for i in (
            range(strip.numPixels())
            if direction == "forward"
            else reversed(range(strip.numPixels()))
        ):
            if direction == "backward":
                color = (0, 0, 0)
            strip.setPixelColorRGB(i, *color)
            strip.show()
            if not q_poll_milli_sleep(delay, queue):
                return
Exemplo n.º 14
0
def simple_pulse(strip, queue, color, delay, max_brightness=255):
    strip.setBrightness(1)
    solid_color(
        strip, queue, color, delay, max_brightness, set_brightness=False, wait=False
    )
    for direction in DIRECTIONS:
        for b in (
            range(max_brightness)
            if direction == "forward"
            else reversed(range(max_brightness))
        ):
            strip.setBrightness(b)
            strip.show()
            if not q_poll_milli_sleep(delay, queue):
                return
Exemplo n.º 15
0
def crossover(strip, queue, color, delay, max_brightness=255):
    strip.setBrightness(max_brightness)
    solid_color(strip, queue, (0, 0, 0), wait=False)
    num_pixels = strip.numPixels()
    if num_pixels % 2 != 1:
        num_pixels -= 1

    for i in range(num_pixels):
        for p in range(num_pixels):
            strip.setPixelColorRGB(p, 0, 0, 0)
        strip.setPixelColorRGB(i, *color)
        strip.setPixelColorRGB(num_pixels - 1 - i, *color)
        strip.show()
        if not q_poll_milli_sleep(delay, queue):
            return
Exemplo n.º 16
0
def solo_bounce(strip, queue, color, delay, max_brightness=255):
    strip.setBrightness(max_brightness)
    for direction in DIRECTIONS:
        for i in (
            range(strip.numPixels())
            if direction == "forward"
            else reversed(range(strip.numPixels()))
        ):
            strip.setPixelColorRGB(i, *color)
            for blank in range(strip.numPixels()):
                if blank != i:
                    strip.setPixelColorRGB(blank, 0, 0, 0)
            strip.show()
            if not q_poll_milli_sleep(delay, queue):
                return
Exemplo n.º 17
0
def blink(strip, queue, color, delay, brightness_manager, *args, **kwargs):
    while True:
        for direction in DIRECTIONS:
            solid_color(
                strip=strip,
                queue=queue,
                color=color if direction == "forward" else (0, 0, 0),
                brightness_manager=brightness_manager,
                wait=False,
            )
            for _ms in range(int(delay) // 2):
                if not q_poll_milli_sleep(2, queue):
                    # We do it this way so we can check the q more often, as for blink
                    # delay may be high. Otherwise the effect may end up blocking the
                    # server, when settings are saved, or it shuts down.
                    return
Exemplo n.º 18
0
def solid_color(strip,
                queue,
                color,
                brightness_manager,
                wait=True,
                show=True,
                *args,
                **kwargs):
    brightness_manager.reset_brightness()
    # Set pixels to a solid color
    for p in range(strip.numPixels()):
        strip.setPixelColorRGB(p, *color)
    if show:
        strip.show()

    while wait:
        if not q_poll_milli_sleep(100, queue):
            return
Exemplo n.º 19
0
def solo_bounce(strip, queue, color, delay, brightness_manager, *args,
                **kwargs):
    while True:
        brightness_manager.reset_brightness()
        for direction in DIRECTIONS:
            for i in (range(strip.numPixels()) if direction == "forward" else
                      reversed(range(strip.numPixels()))):
                solid_color(
                    strip=strip,
                    queue=queue,
                    color=(0, 0, 0),
                    brightness_manager=brightness_manager,
                    wait=False,
                    show=False,
                )
                strip.setPixelColorRGB(i, *color)
                strip.show()
                if not q_poll_milli_sleep(delay, queue):
                    return
Exemplo n.º 20
0
def simple_pulse(strip, queue, color, delay, brightness_manager, *args,
                 **kwargs):
    max_brightness = brightness_manager.max_brightness
    solid_color(
        strip=strip,
        queue=queue,
        color=color,
        brightness_manager=brightness_manager,
        wait=False,
    )

    while True:
        brightness_manager.set_brightness(1)

        for direction in DIRECTIONS:
            for b in (range(max_brightness) if direction == "forward" else
                      reversed(range(max_brightness))):
                brightness_manager.set_brightness(b)

                if not q_poll_milli_sleep(delay, queue):
                    return
Exemplo n.º 21
0
def crossover(strip, queue, color, delay, brightness_manager, *args, **kwargs):
    while True:
        brightness_manager.reset_brightness()
        num_pixels = strip.numPixels()
        if num_pixels % 2 != 1:
            # We need an odd number of pixels
            num_pixels -= 1

        for i in range(num_pixels):
            solid_color(
                strip=strip,
                queue=queue,
                color=(0, 0, 0),
                brightness_manager=brightness_manager,
                wait=False,
                show=False,
            )
            strip.setPixelColorRGB(i, *color)
            strip.setPixelColorRGB(num_pixels - 1 - i, *color)
            strip.show()
            if not q_poll_milli_sleep(delay, queue):
                return
Exemplo n.º 22
0
def bounce(strip, queue, color, delay, brightness_manager, *args, **kwargs):
    while True:
        brightness_manager.reset_brightness()
        red, green, blue, white = color
        size = 3
        for direction in DIRECTIONS:
            for i in (range(0, (strip.numPixels() - size -
                                2)) if direction == "forward" else range(
                                    (strip.numPixels() - size - 2), 0, -1)):
                solid_color(
                    strip=strip,
                    queue=queue,
                    color=(0, 0, 0),
                    brightness_manager=brightness_manager,
                    wait=False,
                    show=False,
                )
                strip.setPixelColorRGB(
                    i,
                    *(
                        int(math.floor(red / 10)),
                        int(math.floor(green / 10)),
                        int(math.floor(blue / 10)),
                        int(math.floor(white / 10)),
                    ))
                for j in range(1, (size + 1)):
                    strip.setPixelColorRGB(i + j, *(red, green, blue))
                strip.setPixelColorRGB(
                    i + size + 1,
                    *(
                        int(math.floor(red / 10)),
                        int(math.floor(green / 10)),
                        int(math.floor(blue / 10)),
                        int(math.floor(white / 10)),
                    ))
                strip.show()
                if not q_poll_milli_sleep(delay, queue):
                    return