kopia lustrzana https://github.com/pimoroni/pimoroni-pico
95 wiersze
2.4 KiB
Python
95 wiersze
2.4 KiB
Python
import time
|
|
import machine
|
|
import ntptime
|
|
import badger2040w
|
|
|
|
|
|
display = badger2040w.Badger2040W()
|
|
display.set_update_speed(2)
|
|
display.set_thickness(4)
|
|
|
|
WIDTH, HEIGHT = display.get_bounds()
|
|
|
|
try:
|
|
display.connect()
|
|
if display.isconnected():
|
|
ntptime.settime()
|
|
except (RuntimeError, OSError):
|
|
pass # no WiFI
|
|
|
|
rtc = machine.RTC()
|
|
|
|
display.set_font("gothic")
|
|
|
|
|
|
def draw_clock():
|
|
global second_offset, second_unit_offset
|
|
|
|
hms = "{:02}:{:02}:{:02}".format(hour, minute, second)
|
|
ymd = "{:04}/{:02}/{:02}".format(year, month, day)
|
|
|
|
hms_width = display.measure_text(hms, 1.8)
|
|
hms_offset = int((WIDTH / 2) - (hms_width / 2))
|
|
|
|
ymd_width = display.measure_text(ymd, 1.0)
|
|
ymd_offset = int((WIDTH / 2) - (ymd_width / 2))
|
|
|
|
display.set_pen(15)
|
|
display.clear()
|
|
display.set_pen(0)
|
|
|
|
display.text(hms, hms_offset, 40, 0, 1.8)
|
|
display.text(ymd, ymd_offset, 100, 0, 1.0)
|
|
|
|
display.set_update_speed(2)
|
|
display.update()
|
|
display.set_update_speed(3)
|
|
|
|
hms = "{:02}:{:02}:".format(hour, minute)
|
|
second_offset = hms_offset + display.measure_text(hms, 1.8)
|
|
hms = "{:02}:{:02}:{}".format(hour, minute, second // 10)
|
|
second_unit_offset = hms_offset + display.measure_text(hms, 1.8)
|
|
|
|
|
|
def draw_second():
|
|
global second_offset, second_unit_offset
|
|
|
|
display.set_pen(15)
|
|
display.rectangle(second_offset, 8, 75, 56)
|
|
display.set_pen(0)
|
|
|
|
if second // 10 != last_second // 10:
|
|
s = "{:02}".format(second)
|
|
display.text(s, second_offset, 40, 0, 1.8)
|
|
display.partial_update(second_offset, 8, 75, 56)
|
|
|
|
s = "{}".format(second // 10)
|
|
second_unit_offset = second_offset + display.measure_text(s, 1.8)
|
|
|
|
else:
|
|
s = "{}".format(second % 10)
|
|
display.text(s, second_unit_offset, 40, 0, 1.8)
|
|
display.partial_update(second_unit_offset, 8, 75 - (second_unit_offset - second_offset), 56)
|
|
|
|
|
|
year, month, day, wd, hour, minute, second, _ = rtc.datetime()
|
|
|
|
if (year, month, day) == (2021, 1, 1):
|
|
rtc.datetime((2022, 2, 28, 0, 12, 0, 0, 0))
|
|
|
|
last_second = second
|
|
last_minute = minute
|
|
draw_clock()
|
|
|
|
|
|
while True:
|
|
year, month, day, wd, hour, minute, second, _ = rtc.datetime()
|
|
if second != last_second:
|
|
if minute != last_minute:
|
|
draw_clock()
|
|
last_minute = minute
|
|
else:
|
|
draw_second()
|
|
last_second = second
|
|
time.sleep(0.01)
|