Sleep after 15s or when ctrl button pressed
This commit is contained in:
56
app.py
56
app.py
@@ -1,6 +1,6 @@
|
|||||||
from machine import reset
|
from machine import reset
|
||||||
from network import WLAN, STA_IF
|
from network import WLAN, STA_IF
|
||||||
from time import sleep, localtime
|
from time import sleep, localtime, time
|
||||||
from lcd import LCD
|
from lcd import LCD
|
||||||
from font import cntr_st
|
from font import cntr_st
|
||||||
from gc import collect, mem_free
|
from gc import collect, mem_free
|
||||||
@@ -16,6 +16,7 @@ class App:
|
|||||||
self.scr_n = -1
|
self.scr_n = -1
|
||||||
else: self.scr_n = 0
|
else: self.scr_n = 0
|
||||||
self.lcd = LCD()
|
self.lcd = LCD()
|
||||||
|
self.last_cng = 0
|
||||||
|
|
||||||
def __connect(self) -> int:
|
def __connect(self) -> int:
|
||||||
wlan = WLAN(STA_IF)
|
wlan = WLAN(STA_IF)
|
||||||
@@ -43,15 +44,15 @@ class App:
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
def __resetButtonStatuses(self) -> None:
|
def __resetButtonStatuses(self) -> None:
|
||||||
self.lcd.keyA["v"] = False
|
if (self.lcd.keyA["v"]): self.lcd.keyA["v"] = False
|
||||||
self.lcd.keyB["v"] = False
|
if (self.lcd.keyB["v"]): self.lcd.keyB["v"] = False
|
||||||
self.lcd.keyX["v"] = False
|
if (self.lcd.keyX["v"]): self.lcd.keyX["v"] = False
|
||||||
self.lcd.keyY["v"] = False
|
if (self.lcd.keyY["v"]): self.lcd.keyY["v"] = False
|
||||||
self.lcd.left["v"] = False
|
if (self.lcd.left["v"]): self.lcd.left["v"] = False
|
||||||
self.lcd.right["v"] = False
|
if (self.lcd.right["v"]): self.lcd.right["v"] = False
|
||||||
self.lcd.up["v"] = False
|
if (self.lcd.up["v"]): self.lcd.up["v"] = False
|
||||||
self.lcd.down["v"] = False
|
if (self.lcd.down["v"]): self.lcd.down["v"] = False
|
||||||
self.lcd.ctrl["v"] = False
|
if (self.lcd.ctrl["v"]): self.lcd.ctrl["v"] = False
|
||||||
|
|
||||||
def __manageButtons(self) -> None:
|
def __manageButtons(self) -> None:
|
||||||
while (True):
|
while (True):
|
||||||
@@ -102,9 +103,10 @@ class App:
|
|||||||
self.scr_n -= 1
|
self.scr_n -= 1
|
||||||
self.lcd.left["v"] = False
|
self.lcd.left["v"] = False
|
||||||
self.lcd.right["v"] = False
|
self.lcd.right["v"] = False
|
||||||
|
if (c): self.last_cng = time()
|
||||||
return c
|
return c
|
||||||
|
|
||||||
def handleButtons(self) -> bool:
|
def handleButtons(self, o: bool = True) -> bool:
|
||||||
up = self.lcd.up["v"]
|
up = self.lcd.up["v"]
|
||||||
down = self.lcd.down["v"]
|
down = self.lcd.down["v"]
|
||||||
left = self.lcd.left["v"]
|
left = self.lcd.left["v"]
|
||||||
@@ -115,12 +117,18 @@ class App:
|
|||||||
keyX = self.lcd.keyX["v"]
|
keyX = self.lcd.keyX["v"]
|
||||||
keyY = self.lcd.keyY["v"]
|
keyY = self.lcd.keyY["v"]
|
||||||
self.__resetButtonStatuses()
|
self.__resetButtonStatuses()
|
||||||
if (ctrl):
|
if (o):
|
||||||
reset()
|
c = self.s.handleButtons(up, down, left, right, keyA, keyB, keyX, keyY, ctrl)
|
||||||
return self.s.handleButtons(up, down, left, right, keyA, keyB, keyX, keyY, ctrl)
|
if (c): self.last_cng = time()
|
||||||
|
return c
|
||||||
|
c = up or down or left or right or keyA or keyB or keyX or keyY or ctrl
|
||||||
|
if (c): self.last_cng = time()
|
||||||
|
return c
|
||||||
|
|
||||||
def __manageScreen(self) -> None:
|
def __manageScreen(self) -> None:
|
||||||
started = False
|
started = False
|
||||||
|
active = True
|
||||||
|
self.last_cng = time()
|
||||||
while (True):
|
while (True):
|
||||||
print("Mem free before and after collecting:")
|
print("Mem free before and after collecting:")
|
||||||
print(mem_free())
|
print(mem_free())
|
||||||
@@ -131,10 +139,20 @@ class App:
|
|||||||
settime()
|
settime()
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
|
if (active and time() - self.last_cng > 15):
|
||||||
|
LCD.setDuty(0)
|
||||||
|
active = False
|
||||||
|
elif (active):
|
||||||
|
if (self.lcd.ctrl["v"]):
|
||||||
|
LCD.setDuty(0)
|
||||||
|
active = False
|
||||||
|
self.lcd.ctrl["v"] = False
|
||||||
|
continue
|
||||||
changed = not started or self.__changeScreen()
|
changed = not started or self.__changeScreen()
|
||||||
if (not started): started = True
|
|
||||||
# if the screen has changed, redraw the whole screen
|
# if the screen has changed, redraw the whole screen
|
||||||
if (changed):
|
if (changed):
|
||||||
|
self.last_cng = time()
|
||||||
|
if (not started): started = True
|
||||||
self.__resetButtonStatuses()
|
self.__resetButtonStatuses()
|
||||||
collect()
|
collect()
|
||||||
if (SCREENS[self.scr_n]["type"] == 0):
|
if (SCREENS[self.scr_n]["type"] == 0):
|
||||||
@@ -147,8 +165,14 @@ class App:
|
|||||||
# otherwise minimise the number of pixels being changed
|
# otherwise minimise the number of pixels being changed
|
||||||
else:
|
else:
|
||||||
b = self.handleButtons()
|
b = self.handleButtons()
|
||||||
if (b): continue
|
if (b):
|
||||||
|
self.last_cng = time()
|
||||||
|
continue
|
||||||
self.s.update(self.lcd)
|
self.s.update(self.lcd)
|
||||||
|
else:
|
||||||
|
if (self.handleButtons(False)):
|
||||||
|
LCD.setDuty()
|
||||||
|
active = True
|
||||||
|
|
||||||
def run(self) -> None:
|
def run(self) -> None:
|
||||||
if (self.scr_n == None): return
|
if (self.scr_n == None): return
|
||||||
|
|||||||
8
lcd.py
8
lcd.py
@@ -7,13 +7,14 @@ RST = 12
|
|||||||
MOSI = 11
|
MOSI = 11
|
||||||
SCK = 10
|
SCK = 10
|
||||||
CS = 9
|
CS = 9
|
||||||
|
DUTY = 32768
|
||||||
|
|
||||||
# LCD driver
|
# LCD driver
|
||||||
class LCD(FrameBuffer):
|
class LCD(FrameBuffer):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
pwm = PWM(Pin(BL))
|
pwm = PWM(Pin(BL))
|
||||||
pwm.freq(1000)
|
pwm.freq(1000)
|
||||||
pwm.duty_u16(32768)
|
pwm.duty_u16(DUTY)
|
||||||
|
|
||||||
self.width = 240
|
self.width = 240
|
||||||
self.height = 240
|
self.height = 240
|
||||||
@@ -186,3 +187,8 @@ class LCD(FrameBuffer):
|
|||||||
self.spi.write(self.buffer)
|
self.spi.write(self.buffer)
|
||||||
self.cs(1)
|
self.cs(1)
|
||||||
# END OF DRIVER
|
# END OF DRIVER
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def setDuty(v: int = DUTY):
|
||||||
|
pwm = PWM(Pin(BL))
|
||||||
|
pwm.duty_u16(v)
|
||||||
Reference in New Issue
Block a user