This is the full file that I’m using on my Pi 400, dual color SPI LCD’s.
#!/usr/bin/env python3
import os
import sys
import time
import datetime
import ST7789
import psutil
from trackball import TrackBall
trackball = TrackBall(interrupt_pin=4)
from os import popen
from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont
from fonts.ttf import RobotoMedium as UserFont
# Fonts
font_sm = ImageFont.truetype(UserFont, 35)
font_md = ImageFont.truetype(UserFont, 50)
font_lg = ImageFont.truetype(UserFont, 55)
# Initialise the left LCD
disp_left = ST7789.ST7789(
port=0,
cs=0,
dc=9,
#backlight=19,
rotation=90,
spi_speed_hz=80 * 1000 * 1000,
)
disp_left.begin()
# Initialise the right LCD
disp_right = ST7789.ST7789(
port=0,
cs=1,
dc=9,
#backlight=19,
rotation=90,
spi_speed_hz=80 * 1000 * 1000,
)
disp_right.begin()
WIDTH = 240
HEIGHT = 240
img = Image.new('RGB', (WIDTH, HEIGHT), color=(255, 0, 0))
draw = ImageDraw.Draw(img)
def get_cpu_temp():
with open("/sys/class/thermal/thermal_zone0/temp", "r") as f:
temp = f.read()
temp = int(temp) / 1000.0
return temp
cpu_temps = [get_cpu_temp()] * 5
colour = (255, 255, 255)
while True:
img = Image.new('RGB', (WIDTH, HEIGHT), color=(255, 0, 0))
draw = ImageDraw.Draw(img)
now = datetime.datetime.now()
date_string = now.strftime("%b %-d")
draw.text((60, 15), date_string, font=font_sm, fill=colour)
time_string = now.strftime("%-I:%M%p")
draw.text((20, 60), time_string, font=font_md, fill=colour)
draw.text((40, 120), ("CPU Temp"), font=font_sm, fill=colour)
cpu_temp = get_cpu_temp()
temp_string = f"{cpu_temp:.0f}°C"
draw.text((60, 160), temp_string, font=font_lg, fill=colour)
disp_left.display(img)
img = Image.new('RGB', (WIDTH, HEIGHT), color=(255, 0, 0))
draw = ImageDraw.Draw(img)
draw.text((40, 15), ("CPU Speed"), font=font_sm, fill=colour)
str=popen("vcgencmd measure_clock arm").read()
str = str[str.find("=")+1:-7]
freq_string = f"{str}mhz"
draw.text((5, 55), freq_string, font=font_lg, fill=colour)
draw.text((40, 120), ("CPU Usage"), font=font_sm, fill=colour)
str = psutil.cpu_percent()
usage_string = f"{str}%"
draw.text((55, 160), usage_string, font=font_lg, fill=colour)
disp_right.display(img)
trackball.set_rgbw(255, 70, 0, 0)
time.sleep(1)
'''
sudp pip3 install st7789
sudo pip3 install fonts
sudo pip3 install font-roboto
run crontab -e
add
@reboot python3 /home/pi/pi-info.py
'''