import time import board import neopixel #### # Neopixel setup # Set Constants pixel_pin = board.GP5 num_pixels = 144 brightness = 0.1 # Create neopixel object named pixels pixels = neopixel.NeoPixel( pixel_pin, num_pixels, brightness = brightness, auto_write=False, pixel_order="GRBW" ) # Colors used in this script # FORMAT: (R, G, B, W) RED = (255, 0, 0, 0) YELLOW = (255, 150, 0, 0) GREEN = (0, 255, 0, 0) BLANK = (0, 0, 0, 0) # Turn all pixels off pixels.fill(BLANK) pixels.show() # END Neopixel setup #### # Count down from the given total seconds, using the chosen # colormode (how the colors are filled into each pixel), # and the given yellowtime (seconds before timer has elapsed # that the bar should show yellow), and redtime (same as # yellowtime). The colormode determines what happens at # yellowtime and redtime. def countdown(seconds, colormode="fill", yellowtime=120, redtime=60, update_interval=1): # Turn all pixels off pixels.fill(BLANK) pixels.show() # Init the update interval tracking variable last_update_time = -1 # Init the elapsed time variable elapsed_time = 0 # Pre-calculate rtime and ytime rtime = seconds - redtime ytime = seconds - yellowtime while True: # Get the current time now = time.monotonic() # Is it time for an update yet? if now >= last_update_time + update_interval: # d the last update time last_update_time = now # Do update stuff for pixel in range(round(num_pixels * (elapsed_time / seconds))): # Set pixel color stuff pass # Display the result IRL pixels.show() # Increment the elapsed time variable elapsed_time += update_interval