Select Git revision
__init__.py
Forked from
card10 / firmware
Source project has a limited visibility.
__init__.py 3.13 KiB
import ujson
import os
import display
import utime
import buttons
CONFIG_NAME = "at-timestamp.json"
def init():
if CONFIG_NAME not in os.listdir("."):
at_config = {"time_start": "unset"}
f = open(CONFIG_NAME, "w")
f.write(ujson.dumps(at_config))
f.close()
if is_timestamp_set():
global menu_state
menu_state = 1
timestamp_read()
def is_timestamp_set():
f = open(CONFIG_NAME, "r")
c = ujson.loads(f.read())
f.close()
if c["time_start"] == "unset":
return False
else:
return True
def triangle(disp, x, y, left):
yf = 1 if left else -1
scale = 6
disp.line(x - scale * yf, int(y + scale / 2), x, y)
disp.line(x, y, x, y + scale)
disp.line(x, y + scale, x - scale * yf, y + int(scale / 2))
def timestamp_reset():
f = open(CONFIG_NAME, "r")
c = ujson.loads(f.read())
c["time_start"] = "unset"
f.close()
f = open(CONFIG_NAME, "w")
f.write(ujson.dumps(c))
f.close()
def timestamp_read():
global time_start
f = open(CONFIG_NAME, "r")
c = ujson.loads(f.read())
time_start = c["time_start"]
f.close()
def timestamp_write():
f = open(CONFIG_NAME, "r")
c = ujson.loads(f.read())
c["time_start"] = utime.time()
f.close()
f = open(CONFIG_NAME, "w")
f.write(ujson.dumps(c))
f.close()
def headline():
disp.print("Adventure \n Time", posy=0, fg=[0, 255, 255])
def menu():
if menu_state == 0:
disp.print("start?", posy=40, fg=[255, 255, 255])
triangle(disp, 10, 66, True)
disp.print("start.", posx=15, posy=60, fg=[0, 255, 0])
elif menu_state == 1:
seconds = utime.time() - time_start
m, s = divmod(seconds, 60)
h, m = divmod(m, 60)
disp.print("%02d:%02d:%02d" % (h, m, s), posy=40, fg=[255, 255, 255])
triangle(disp, 10, 66, True)
disp.print("reset", posx=15, posy=60, fg=[255, 0, 0])
elif menu_state == 2:
disp.print("reset?", posy=40, fg=[255, 255, 255])
triangle(disp, 10, 66, True)
triangle(disp, 150, 66, False)
disp.print("no", posx=15, posy=60, fg=[255, 0, 0])
disp.print("yes", posx=105, posy=60, fg=[0, 255, 0])
menu_state = 0
time_start = 0
disp = display.open()
button_pressed = False
init()
while True:
disp.clear()
headline()
v = buttons.read(buttons.BOTTOM_LEFT | buttons.BOTTOM_RIGHT)
if v == 0:
button_pressed = False
if menu_state == 0:
if not button_pressed and v & buttons.BOTTOM_LEFT != 0:
button_pressed = True
timestamp_write()
timestamp_read()
menu_state = 1
elif menu_state == 1:
if not button_pressed and v & buttons.BOTTOM_LEFT != 0:
button_pressed = True
menu_state = 2
elif menu_state == 2:
if not button_pressed and v & buttons.BOTTOM_LEFT != 0:
button_pressed = True
menu_state = 1
if not button_pressed and v & buttons.BOTTOM_RIGHT != 0:
button_pressed = True
timestamp_reset()
menu_state = 0
menu()
disp.update()
utime.sleep(0.1)