Compare commits

...

2 Commits

Author SHA1 Message Date
David Thurstenson dcd0246843 Catch a couple special cases
- Light the first pixel on timer start
- Wait to light the last pixel until timer has truly elapsed
2022-10-15 07:10:32 -05:00
David Thurstenson 5637ec322a Tweak the display time to use datetime.timedelta() instead of rolling my own with divmod() and friends 2022-10-15 07:07:49 -05:00
1 changed files with 34 additions and 14 deletions

View File

@ -111,18 +111,34 @@ def countdown(
# Do update stuff
# Loop over every pixel ID that should be lit
# based on the elapsed time
for pixel in range(round(num_pixels * ((seconds - current_time) / seconds))):
# Set pixel color stuff
if current_time < 0:
pass
elif current_time <= redtime:
colorizer(pixel, colormode, red=True)
elif current_time <= yellowtime:
colorizer(pixel, colormode, yellow=True)
else:
colorizer(pixel, colormode)
# Calculate the current position
current_position = round(num_pixels * ((seconds - current_time) / seconds))
# Catch a couple of special cases
if current_position == 0:
# Light the first LED when the timer starts
# regardless of other factors
colorizer(0, colormode)
elif current_position == num_pixels and current_time > 0:
# If current_position calls for *all*
# pixels to be lit, and the timer
# hasn't expired yet, don't do anything.
# This should delay the last pixel from
# lighting until the timer has fully elapsed
pass
else:
# Loop over every pixel ID that should be lit
# based on the elapsed time
for pixel in range(current_position):
# Set pixel color stuff
if current_time < 0:
pass
elif current_time <= redtime:
colorizer(pixel, colormode, red=True)
elif current_time <= yellowtime:
colorizer(pixel, colormode, yellow=True)
else:
colorizer(pixel, colormode)
# Display the result IRL
pixels.show()
@ -131,9 +147,13 @@ def countdown(
current_time -= update_interval
# Massage the current_time seconds count into human-readable minutes:seconds
display_time = divmod(abs(current_time), 60)
display_time = str(datetime.timedelta(seconds=abs(current_time)))[3:]
if current_time < 0:
display_time_sign = "-"
else:
display_time_sign = " "
print("current time: " + display_time_sign + str(display_time[0]) + ":" + str(display_time[1]))
print("current time: " + display_time_sign + display_time)