add spoooky mooon example

pull/536/head
helgibbons 2022-10-12 12:06:41 +01:00
rodzic b22c536dcc
commit 97abbb7af8
2 zmienionych plików z 140 dodań i 0 usunięć

Wyświetl plik

@ -0,0 +1,56 @@
import time
import plasma
from plasma import plasma2040
from machine import RTC
"""
Spooky moon simulator!
The LEDs will get brighter as midnight approaches!
It won't do much in the day...
Needs to be run from Thonny to get the right time.
"""
# Set how many LEDs you have
NUM_LEDS = 50
# pick a hue (0 - 360° on the colour wheel)
# warm white moon - 60, blue moon - 230 , blood moon - 0
HUE = 60
SATURATION = 0.2 # increase this for a more colourful moon (max 1.0)
# when to start counting down from, in seconds before midnight
# eg from 10pm = 2 hours = 2 * 60 * 60 = 7200
COUNT_FROM = 14400
# set up the WS2812 / NeoPixel™ LEDs
led_strip = plasma.WS2812(NUM_LEDS, 0, 0, plasma2040.DAT)
# start updating the LED strip
led_strip.start()
while True:
# get the time from Pico RTC
year, month, day, _, hour, minute, second, _ = RTC().datetime()
print(f'Time is {hour:02d}:{minute:02d}')
# calculate how long to go until midnight
if hour >= 12:
hours_to_go = 23 - hour
minutes_to_go = 59 - minute
seconds_to_go = 59 - second
total_seconds = hours_to_go * 60 * 60 + minutes_to_go * 60 + seconds_to_go
print(f'{total_seconds} seconds until midnight')
# or, if it's after midnight
else:
hours_since = 0 + hour
minutes_since = 0 + minute
seconds_since = 0 + second
total_seconds = hours_since * 60 * 60 + minutes_since * 60 + seconds_since
print(f'{total_seconds} seconds since midnight')
# gets brighter as witching hour approacheth
brightness = max(0, (COUNT_FROM - total_seconds) / COUNT_FROM)
for i in range(NUM_LEDS):
led_strip.set_hsv(i, HUE/365.0, SATURATION, brightness)
print(f'Brightness - {brightness * 100} %')
time.sleep(10.0)

Wyświetl plik

@ -0,0 +1,84 @@
import time
import plasma
from plasma import plasma2040
from machine import RTC
"""
Spooky moon simulator!
The LEDs will get brighter as midnight approaches!
It won't do much in the day...
Gets the time from a connected RV3028 RTC breakout:
https://shop.pimoroni.com/products/rv3028-real-time-clock-rtc-breakout
"""
# Set how many LEDs you have
NUM_LEDS = 50
# pick a hue (0 - 360° on the colour wheel)
# warm white moon - 60, blue moon - 230 , blood moon - 0
HUE = 60
SATURATION = 0.2 # increase this for a more colourful moon (max 1.0)
# when to start counting down from, in seconds before midnight
# eg from 10pm = 2 hours = 2 * 60 * 60 = 7200
COUNT_FROM = 14400
def set_pico_time():
# the function sets the Pico's RTC from a RV3028 RTC breakout
# to setup breakout (and set the time) run this first:
# https://github.com/pimoroni/pimoroni-pico/blob/main/micropython/examples/breakout_rtc/set-time.py
from pimoroni_i2c import PimoroniI2C
from breakout_rtc import BreakoutRTC
from machine import RTC
# set up I2C
PINS_BREAKOUT_GARDEN = {"sda": 4, "scl": 5} # i2c pins 4, 5 for Breakout Garden
i2c = PimoroniI2C(**PINS_BREAKOUT_GARDEN)
# set up the RTC breakout
RV3028 = BreakoutRTC(i2c)
# set the Pico's RTC from the RTC breakout
RV3028.update_time()
RTC().datetime([RV3028.get_year(), RV3028.get_month(), RV3028.get_date(),
RV3028.get_weekday(), RV3028.get_hours(), RV3028.get_minutes(),
RV3028.get_seconds(), 0])
print(f"Pico RTC set to breakout time: {RV3028.string_date()} {RV3028.string_time()}")
# set up the WS2812 / NeoPixel™ LEDs
led_strip = plasma.WS2812(NUM_LEDS, 0, 0, plasma2040.DAT)
# start updating the LED strip
led_strip.start()
# call our function to set the Pico's RTC
set_pico_time()
while True:
# get the time from Pico RTC
year, month, day, _, hour, minute, second, _ = RTC().datetime()
print(f'Time is {hour:02d}:{minute:02d}')
# calculate how long to go until midnight
if hour >= 12:
hours_to_go = 23 - hour
minutes_to_go = 59 - minute
seconds_to_go = 59 - second
total_seconds = hours_to_go * 60 * 60 + minutes_to_go * 60 + seconds_to_go
print(f'{total_seconds} seconds until midnight')
# or, if it's after midnight
else:
hours_since = 0 + hour
minutes_since = 0 + minute
seconds_since = 0 + second
total_seconds = hours_since * 60 * 60 + minutes_since * 60 + seconds_since
print(f'{total_seconds} seconds since midnight')
# gets brighter as witching hour approacheth
brightness = max(0, (COUNT_FROM - total_seconds) / COUNT_FROM)
for i in range(NUM_LEDS):
led_strip.set_hsv(i, HUE/365.0, SATURATION, brightness)
print(f'Brightness - {brightness * 100} %')
time.sleep(10.0)