Skip to content

Commit 3679fa8

Browse files
Implementing auto backlight function, reducing to 4 level of backlight. 3rd button cycle through 3 different backlight and auto backlight.
1 parent a183789 commit 3679fa8

File tree

3 files changed

+40
-7
lines changed

3 files changed

+40
-7
lines changed

clock.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ def update_time(self):
4040
now = "%02d:%02d" % (t[3], t[4])
4141
self.display.show_day(t[6])
4242
self.display.show_text(now)
43+
if self.display.auto_backlight:
44+
self.display.show_icon("AutoLight")
4345

4446
def backlight_callback(self, t):
4547
self.display.switch_backlight()

display.py

Lines changed: 33 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from machine import Pin
1+
from machine import Pin, ADC
22

33
from util import singleton
44
from utime import sleep_us
@@ -15,6 +15,8 @@ def __init__(self, scheduler):
1515
self.sdi = Pin(11, Pin.OUT)
1616
self.clk = Pin(10, Pin.OUT)
1717
self.le = Pin(12, Pin.OUT)
18+
19+
self.ain = ADC(26)
1820

1921
self.row = 0
2022
self.count = 0
@@ -23,12 +25,17 @@ def __init__(self, scheduler):
2325
self.disp_offset = 2
2426
self.initialise_fonts()
2527
self.initialise_icons()
26-
27-
# CPU freq needs to be increase to 250 for better results
28-
self.backlight_sleep = [10, 100, 500, 1000, 1500] # From 10 (low) to 1500(High)
29-
self.current_backlight = 4
3028

31-
scheduler.schedule("enable-leds", 1, self.enable_leds)
29+
self.scheduler = scheduler
30+
31+
# CPU freq needs to be increase to 250 for better results
32+
self.backlight_sleep = [10, 100, 500, 1500] # From 10 (low) to 1500(High)
33+
self.current_backlight = 3
34+
self.auto_backlight = True
35+
self.show_icon("AutoLight")
36+
self.update_auto_backlight_value(None)
37+
self.scheduler.schedule("enable-leds", 1, self.enable_leds)
38+
self.scheduler.schedule("update_auto_backlight_value", 1000, self.update_auto_backlight_value)
3239

3340
def enable_leds(self, t):
3441
self.count += 1
@@ -99,11 +106,30 @@ def sidelight_off(self):
99106
self.leds[0][5] = 0
100107

101108
def switch_backlight(self):
102-
if self.current_backlight == 4:
109+
if self.auto_backlight:
110+
self.auto_backlight = False
111+
self.hide_icon("AutoLight")
103112
self.current_backlight = 0
113+
self.scheduler.remove("update_auto_backlight_value")
114+
elif self.current_backlight == 3:
115+
self.show_icon("AutoLight")
116+
self.auto_backlight = True
117+
self.update_auto_backlight_value(None)
118+
self.scheduler.schedule("update_auto_backlight_value", 1000, self.update_auto_backlight_value)
104119
else:
105120
self.current_backlight += 1
106121

122+
def update_auto_backlight_value(self, t):
123+
aim = self.ain.read_u16()
124+
if aim > 60000: # Low light
125+
self.current_backlight = 0
126+
elif aim > 58000:
127+
self.current_backlight = 1
128+
elif aim > 10000:
129+
self.current_backlight = 2
130+
else:
131+
self.current_backlight = 3
132+
107133
def print(self):
108134
for row in range(0, 8):
109135
for pos in range(0, 24):

scheduler.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,11 @@ def start(self):
2222
def schedule(self, name, duration, callback):
2323
self.schedules.append(self.Schedule(name, duration, callback))
2424

25+
def remove(self, name):
26+
for schedule in self.schedules:
27+
if schedule.name == name:
28+
self.schedules.remove(schedule)
29+
2530
def event_callback(self, t):
2631
for schedule in self.schedules:
2732
if schedule.duration == 1:

0 commit comments

Comments
 (0)