Added auto brightness adjustment

This commit is contained in:
= 2024-08-01 10:23:52 -04:00
parent 8537b30b49
commit 383cb15866
4 changed files with 93 additions and 68 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
*.pyc

View File

@ -10,7 +10,18 @@ from drawing import make_cpu_grid, draw_to_LEDs
from monitors import CPUMonitorThread from monitors import CPUMonitorThread
# External Dependencies # External Dependencies
try:
import serial # pyserial import serial # pyserial
import numpy as np # This is used in a module and we import it here to fetch it if needed
import screen_brightness_control as sbc
except ImportError:
import pip
for dependency in ["numpy", "pyserial", "screen-brightness-control"]:
pip.main(['install', '--user', dependency])
import serial
import screen_brightness_control as sbc
# print(sbc.get_brightness())
def get_ports(): def get_ports():
"""Returns a list of all available serial ports on the system. """Returns a list of all available serial ports on the system.
@ -47,18 +58,26 @@ if __name__ == "__main__":
# print(get_ports()) # print(get_ports())
port = "COM3" port = "COM3"
cpu_queue = queue.Queue() cpu_queue = queue.Queue(2)
cpu_monitor = CPUMonitorThread(cpu_queue) cpu_monitor = CPUMonitorThread(cpu_queue)
cpu_monitor.start() cpu_monitor.start()
s = serial.Serial(port, 115200) s = serial.Serial(port, 115200)
min_background_brightness = 10
max_background_brightness = 30
min_foreground_brightness = 30
max_foreground_brightness = 120
while True: while True:
if not cpu_queue.empty(): if not cpu_queue.empty():
cpu_values = cpu_queue.get() cpu_values = cpu_queue.get()
grid = make_cpu_grid(cpu_values, 10, 30) screen_brightness = sbc.get_brightness()[0]
background_value = int(screen_brightness / 100 * (max_background_brightness - min_background_brightness) + min_background_brightness)
foreground_value = int(screen_brightness / 100 * (max_foreground_brightness - min_foreground_brightness) + min_foreground_brightness)
grid = make_cpu_grid(cpu_values, background_value, foreground_value)
draw_to_LEDs(s, grid) draw_to_LEDs(s, grid)
time.sleep(0.1) time.sleep(0.05)

View File

@ -20,6 +20,7 @@ class DiskMonitorThread(threading.Thread):
def run(self): def run(self):
while True: while True:
if not self.output_queue.full():
disk_io = psutil.disk_io_counters() disk_io = psutil.disk_io_counters()
read_usage = disk_io.read_bytes read_usage = disk_io.read_bytes
write_usage = disk_io.write_bytes write_usage = disk_io.write_bytes
@ -60,6 +61,7 @@ class NetworkMonitorThread(threading.Thread):
def run(self): def run(self):
while True: while True:
if not self.output_queue.full():
net_io = psutil.net_io_counters() net_io = psutil.net_io_counters()
sent_usage = net_io.bytes_sent sent_usage = net_io.bytes_sent
recv_usage = net_io.bytes_recv recv_usage = net_io.bytes_recv
@ -98,6 +100,7 @@ class CPUMonitorThread(threading.Thread):
def run(self): def run(self):
while True: while True:
if not self.output_queue.full():
cpu_usage = psutil.cpu_percent(percpu=True) cpu_usage = psutil.cpu_percent(percpu=True)
for i in range(self.cpu_count): for i in range(self.cpu_count):
useage = 2 * max(cpu_usage[2*i], cpu_usage[2*i+1]) # Combine logical cores useage = 2 * max(cpu_usage[2*i], cpu_usage[2*i+1]) # Combine logical cores
@ -126,6 +129,7 @@ class MemoryMonitorThread(threading.Thread):
def run(self): def run(self):
while True: while True:
if not self.output_queue.full():
memory_usage = psutil.virtual_memory().percent / 100.0 memory_usage = psutil.virtual_memory().percent / 100.0
self.memory_usage_history.append(memory_usage) self.memory_usage_history.append(memory_usage)
self.history_times.append(time.time()) self.history_times.append(time.time())

1
start.bat Normal file
View File

@ -0,0 +1 @@
py -3 led_system_monitor.py