Skip to content

Instantly share code, notes, and snippets.

@Peetz0r
Created March 4, 2021 01:48
Show Gist options
  • Save Peetz0r/d3e662a91b4dfe328f9b7e1cce66ac9d to your computer and use it in GitHub Desktop.
Save Peetz0r/d3e662a91b4dfe328f9b7e1cce66ac9d to your computer and use it in GitHub Desktop.
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