be6c6b02b0
The ADC on nRF doesn't run precisely stable which means the battery meter can flicker if updated too often. This will eventually be fixed by the framework but, for now, let's just force the update rate to be fairly slow.
47 lines
1.2 KiB
Python
47 lines
1.2 KiB
Python
import fonts
|
|
import widgets
|
|
|
|
DIGITS = (
|
|
fonts.clock_0,
|
|
fonts.clock_1,
|
|
fonts.clock_2,
|
|
fonts.clock_3,
|
|
fonts.clock_4,
|
|
fonts.clock_5,
|
|
fonts.clock_6,
|
|
fonts.clock_7,
|
|
fonts.clock_8,
|
|
fonts.clock_9
|
|
)
|
|
|
|
class ClockApp(object):
|
|
|
|
def __init__(self):
|
|
self.on_screen = ( -1, -1 )
|
|
self.meter = widgets.BatteryMeter()
|
|
|
|
def draw(self, watch):
|
|
display = watch.display
|
|
|
|
display.fill(0)
|
|
display.rleblit(fonts.clock_colon, pos=(2*48, 80), fg=0xb5b6)
|
|
self.on_screen = ( -1, -1 )
|
|
self.update(watch)
|
|
self.meter.draw()
|
|
|
|
def update(self, watch):
|
|
now = watch.rtc.get_time()
|
|
if now[0] == self.on_screen[0] and now[1] == self.on_screen[1]:
|
|
if now[1] % 2 == 0:
|
|
self.meter.update()
|
|
return False
|
|
|
|
display = watch.display
|
|
display.rleblit(DIGITS[now[1] % 10], pos=(4*48, 80))
|
|
display.rleblit(DIGITS[now[1] // 10], pos=(3*48, 80), fg=0xc638)
|
|
display.rleblit(DIGITS[now[0] % 10], pos=(1*48, 80))
|
|
display.rleblit(DIGITS[now[0] // 10], pos=(0*48, 80), fg=0xc638)
|
|
self.on_screen = now
|
|
|
|
self.meter.update()
|
|
return True
|