1
0
Fork 0
wasp-os/wasp/boards/simulator/watch.py
Daniel Thompson 41647556c1 clock: Reduce the update rate of the battery meter
In addition to the fix (which is simple) we also modify the button handling
of the simulator because, rather by acident, it relies on the bugs in the
battery meter redraw to ensure the simulator stays active.
2020-02-23 20:19:37 +00:00

96 lines
2.1 KiB
Python

import time
def sleep_ms(ms):
time.sleep(ms / 1000)
time.sleep_ms = sleep_ms
from machine import Pin
from machine import SPI
from drivers.st7789 import ST7789_SPI
from drivers.vibrator import Vibrator
button = Pin('BUTTON', Pin.IN, quiet=True)
class Backlight(object):
def __init__(self, level=1):
self.set(level)
def set(self, level):
print(f'BACKLIGHT: {level}')
button.value(bool(level))
class Display(ST7789_SPI):
def __init__(self):
spi = SPI(0)
# Mode 3, maximum clock speed!
spi.init(polarity=1, phase=1, baudrate=8000000)
# Configure the display
cs = Pin("DISP_CS", Pin.OUT, quiet=True)
dc = Pin("DISP_DC", Pin.OUT, quiet=True)
rst = Pin("DISP_RST", Pin.OUT, quiet=True)
super().__init__(240, 240, spi, cs=cs, dc=dc, res=rst)
class Battery(object):
def __init__(self):
self.voltage = 3.9
self.step = -0.01
self.powered = False
def charging(self):
self.voltage_mv()
return self.powered
def power(self):
self.voltage_mv()
return self.powered
def voltage_mv(self):
if self.voltage > 4:
self.step = -0.01
self.powered = False
elif self.voltage < 3.4:
self.step = 0.04
self.powered = True
self.voltage += self.step
return int(self.voltage * 1000)
def level(self):
mv = self.voltage_mv()
level = ((19 * mv) // 100) - 660
if level > 100:
return 100
if level < 0:
return 0
return level
class RTC(object):
def __init__(self):
self.uptime = 0
def update(self):
now = time.time()
if now == self.uptime:
return False
self.uptime = now
return True
def get_localtime(self):
return time.localtime()
def get_time(self):
now = time.localtime()
return (now[3], now[4], now[5])
def uptime(self):
return time.time
display = Display()
backlight = Backlight()
battery = Battery()
rtc = RTC()
vibrator = Vibrator(Pin('MOTOR', Pin.OUT, value=0), active_low=True)