micropython-nano-gui/extras/demos/eclock_test.py

64 wiersze
1.7 KiB
Python

# eclock_test.py Unusual clock display for nanogui
# see micropython-epaper/epd-clock
# Released under the MIT License (MIT). See LICENSE.
# Copyright (c) 2023 Peter Hinch
"""
# color_setup.py:
import gc
from drivers.epaper.pico_epaper_42 import EPD as SSD
gc.collect() # Precaution before instantiating framebuf
ssd = SSD() #asyn=True) # Create a display instance
"""
from color_setup import ssd
import time
from machine import lightsleep, RTC
from gui.core.writer import CWriter
from gui.core.nanogui import refresh
import gui.fonts.font10 as font
from gui.core.colors import *
from extras.widgets.eclock import EClock
epaper = hasattr(ssd, "wait_until_ready")
if epaper and not hasattr(ssd, "set_partial"):
raise OSError("ePaper display does not support partial update.")
def test():
rtc = RTC()
#rtc.datetime((2023, 3, 18, 5, 10, 0, 0, 0))
wri = CWriter(ssd, font, verbose=False)
wri.set_clip(True, True, False) # Clip to screen, no wrap
refresh(ssd, True)
if epaper:
ssd.wait_until_ready()
ec = EClock(wri, 10, 10, 200, fgcolor=WHITE, bgcolor=BLACK)
ec.value(t := time.localtime()) # Initial drawing
refresh(ssd)
if epaper:
ssd.wait_until_ready()
mins = t[4]
while True:
t = time.localtime()
if t[4] != mins: # Minute has changed
mins = t[4]
if epaper:
if mins == 30:
ssd.set_full()
else:
ssd.set_partial()
ec.value(t)
refresh(ssd)
if epaper:
ssd.wait_until_ready()
#lightsleep(10_000)
time.sleep(10)
try:
test()
finally:
if epaper:
ssd.sleep()