Created
March 4, 2021 01:48
-
-
Save Peetz0r/d3e662a91b4dfe328f9b7e1cce66ac9d to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import wasp | |
import icons | |
from ubinascii import a2b_base64 | |
WEEKDAYS = [ | |
'Maandag', | |
'Dinsdag', | |
'Woensdag', | |
'Donderdag', | |
'Vrijdag', | |
'Zaterdag', | |
'Zondag', | |
] | |
COLON = (6, 66, b'Z$\x96$T') | |
DIGITS = [ | |
(26, 66, a2b_base64(b'Bg8LDwoRCREGAQMPAgEDAgQNAwIBBBIIEgkQCw4MDgwODA4MDgwODA4MDgwODA4MDgwODA4MDgwODA4MDgwOCxAJEgcUBRYEFgI0AhYEFgUUBxIJEAsODA4MDgwODA4MDgwODA4MDgwODA4MDgwODA4MDgwODA4MDgwODA4MDgYBBAMLAgQDAgQLAwIJDQwPCw8LDwU=')), | |
(26, 66, a2b_base64(b'fwEZAhcEFgQVBRQGFAYUBhQGFAYUBhQGFAYUBhQGFAYUBhQGFAYUBhQGFAYUBhUFFgQXAxgCGAJMAhgCFwMWBBUFFAYUBhQGFAYUBhQGFAYUBhQGFAYUBhQGFAYUBhQGFAYUBhQGFAYUBhQGFQQXAmo=')), | |
(26, 66, a2b_base64(b'Bg8LDwoRCREKDwIBCQ0DAhcEFgQVBRQGFAYUBhQGFAYUBhQGFAYUBhQGFAYUBhQGFAYUBhQGFAYUBhUFFgQXAwcNBAIGDwMCBBMHEwMCBA8FAgUNBgMXBBYFFQYUBhQGFAYUBhQGFAYUBhQGFAYUBhQGFAYUBhQGFAYUBhQGFAYUBhQGFQQDCwkCBAsODQwPCw8LDwU=')), | |
(26, 66, a2b_base64(b'Bg8LDwoRCREKDwIBCQ0DAhcEFgQVBRQGFAYUBhQGFAYUBhQGFAYUBhQGFAYUBhQGFAYUBhQGFAYUBhUFFgQXAwcNBAIGDwMCBBMHEwkPAwIHDQQCFwMWBBUFFAYUBhQGFAYUBhQGFAYUBhQGFAYUBhQGFAYUBhQGFAYUBhQGFAYUBhQGCAsCBAkLAwIJDQwPCw8LDwU=')), | |
(26, 66, a2b_base64(b'agEUAQMCFAIBBBIIEgkQCw4MDgwODA4MDgwODA4MDgwODA4MDgwODA4MDgwODA4MDgwOCxAJEgcUBQUNBAQEDwMCBBMHEwkPAwIHDQQCFwMWBBUFFAYUBhQGFAYUBhQGFAYUBhQGFAYUBhQGFAYUBhQGFAYUBhQGFAYUBhQGFQQXAmo=')), | |
(26, 66, a2b_base64(b'Bg8LDwoRCREGAQMPBgIEDQYEFgQWBRUGFAYUBhQGFAYUBhQGFAYUBhQGFAYUBhQGFAYUBhQGFAYUBhQFFQQWAxcCBQ0GAgQPCRMHEwkPAwIHDQQCFwMWBBUFFAYUBhQGFAYUBhQGFAYUBhQGFAYUBhQGFAYUBhQGFAYUBhQGFAYUBhQGCAsCBAkLAwIJDQwPCw8LDwU=')), | |
(26, 66, a2b_base64(b'Bg8LDwoRCREGAQMPBgIEDQYEFgQWBRUGFAYUBhQGFAYUBhQGFAYUBhQGFAYUBhQGFAYUBhQGFAYUBhQFFQQWAxcCBQ0GAgQPCRMHEwMCBA8DBAUNBAUUBxIJEAsODA4MDgwODA4MDgwODA4MDgwODA4MDgwODA4MDgwODA4MDgwODA4MDgYBBAMLAgQDAgQLAwIJDQwPCw8LDwU=')), | |
(26, 66, a2b_base64(b'Bg8LDwoRCREKDwIBCQ0DAhcEFgQVBRQGFAYUBhQGFAYUBhQGFAYUBhQGFAYUBhQGFAYUBhQGFAYUBhUFFgQXAxgCGAJMAhgCFwMWBBUFFAYUBhQGFAYUBhQGFAYUBhQGFAYUBhQGFAYUBhQGFAYUBhQGFAYUBhQGFQQXAmo=')), | |
(26, 66, a2b_base64(b'Bg8LDwoRCREGAQMPAgEDAgQNAwIBBBIIEgkQCw4MDgwODA4MDgwODA4MDgwODA4MDgwODA4MDgwODA4MDgwOCxAJEgcUBQUNBAQEDwMCBBMHEwMCBA8DBAUNBAUUBxIJEAsODA4MDgwODA4MDgwODA4MDgwODA4MDgwODA4MDgwODA4MDgwODA4MDgYBBAMLAgQDAgQLAwIJDQwPCw8LDwU=')), | |
(26, 66, a2b_base64(b'Bg8LDwoRCREGAQMPAgEDAgQNAwIBBBIIEgkQCw4MDgwODA4MDgwODA4MDgwODA4MDgwODA4MDgwODA4MDgwOCxAJEgcUBQUNBAQEDwMCBBMHEwkPAwIHDQQCFwMWBBUFFAYUBhQGFAYUBhQGFAYUBhQGFAYUBhQGFAYUBhQGFAYUBhQGFAYUBhQGCAsCBAkLAwIJDQwPCw8LDwU=')) | |
] | |
class EightSegmentClockApp(): | |
NAME = '8 Segment' | |
ICON = DIGITS[8] | |
def __init__(self): | |
self.on_screen = None | |
def foreground(self): | |
wasp.system.bar.clock = False | |
self.draw() | |
wasp.system.request_tick(1000) | |
wasp.system.request_event(wasp.EventMask.TOUCH) | |
def touch(self, event): | |
wasp.system.brightness = wasp.system.brightness % 3 + 1 | |
def tick(self, ticks): | |
self.update() | |
def sleep(self): | |
return True | |
def wake(self): | |
self.update() | |
def draw(self): | |
self.on_screen = None | |
wasp.watch.drawable.fill() | |
wasp.system.bar.draw() | |
self.update() | |
def update(self): | |
draw = wasp.watch.drawable | |
time = wasp.watch.rtc.get_localtime() | |
bat = ( | |
round(wasp.watch.battery.voltage_mv()/1000,1), | |
wasp.watch.battery.charging(), | |
wasp.watch.battery.power(), | |
) | |
now = (time[:5], bat) | |
print("%02d:%02d:%02d, %3.1fv" % (time[3:6] + (bat[0],))) | |
wasp.system.bar.update() | |
draw.rleblit(DIGITS[time[5] % 10], pos=(7*30, 54), fg=0xf800) | |
draw.rleblit(DIGITS[time[5] // 10], pos=(6*30, 54), fg=0xf800) | |
if not self.on_screen or (now != self.on_screen): | |
draw.rleblit(COLON, pos=(2*30+10, 54), fg=0x8000) | |
draw.rleblit(COLON, pos=(5*30+10, 54), fg=0x8000) | |
draw.rleblit(DIGITS[time[4] % 10], pos=(4*30, 54), fg=0xf800) | |
draw.rleblit(DIGITS[time[4] // 10], pos=(3*30, 54), fg=0xf800) | |
draw.rleblit(DIGITS[time[3] % 10], pos=(1*30, 54), fg=0xf800) | |
draw.rleblit(DIGITS[time[3] // 10], pos=(0*30, 54), fg=0xf800) | |
draw.set_color(0xffff) # white | |
draw.string(WEEKDAYS[time[6]], 0, 138, width=240) | |
draw.string('%04d - %02d - %02d' % (time[0], time[1], time[2]), 0, 172, width=240) | |
if bat[1]: | |
draw.set_color(0x07ff) # blue during charging | |
elif bat[2]: | |
draw.set_color(0x07e0) # green when plugged in and full | |
elif bat[0] < 3.5: | |
draw.set_color(0xf800) # red when close to empty | |
draw.string('%3.1fv' % bat[0], 0, 220, width=80) | |
self.on_screen = now |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment