[micropython]esp32 s3驱动st7789 1.69寸的240x280屏幕,注意初始化函数
from machine import Pin, SoftSPI,SPI
from st7789 import ST7789
from st7789 import CYAN
from st7789 import BLACK
from st7789 import BLUE
#hspi = SPI(2, baudrate=80000000, polarity=1, sck=Pin(14), mosi=Pin(13), miso=Pin(12))
'''
scl 14
sda 13
rst 9
dc 8
cs 11
blk 7
'''
sck=Pin(14, Pin.OUT)
mosi=Pin(13, Pin.OUT)
miso=Pin(12, Pin.OUT)
rst =Pin(9, Pin.OUT)
dc=Pin(8, Pin.OUT)
cs=Pin(11, Pin.OUT)
blk=Pin(7, Pin.OUT)
#rst.on() #一定要off才有反映
cs.off()
blk.on()
#display = ST7789(hspi,320,240,reset=Pin(9),dc=Pin(8))
#display.fill(CYAN)
import lvgl as lv
from ili9XXX import st7789
import fs_driver
import time
#gc.collect()
#0.这个是关键的初始化函数,支持TB购买的1.69寸240x280的spi屏幕
disp=st7789(
mosi=13,
clk=14,
cs=11,
dc=8,
rst=9,
mhz=80,
factor=16,#这个参数一定要设置为16,这样才能支持240x280的屏幕
#hybrid=True,
width=240,
height=280,
start_x=0,
start_y=20,
double_buffer=1,
rot=0,
#half_duplex=False,
#initialize=True
)
# 1. 创建显示screen对象。将需要显示的组件添加到这个screen才能显示
scr = lv.obj() # scr====> screen 屏幕
fs_drv = lv.fs_drv_t()
fs_driver.fs_register(fs_drv, 'S')
scr = lv.scr_act()
scr.clean()
# 2. 封装要显示的组件
class MyWidget():
def __init__(self, scr):
# 创建滑块slider组件
self.slider = lv.slider(scr)
self.slider.set_width(180) # 设置滑块的长度
# self.slider.set_range(10, 50) # 默认值是0-100
self.slider.center() # 在窗口的中间位置
self.slider.add_event_cb(self.slider_event_cb, lv.EVENT.VALUE_CHANGED, None) # 添加事件的回调函数
# 创建一个标签label
self.label = lv.label(scr)
self.label.set_text("0") # 默认值
self.label.align_to(self.slider, lv.ALIGN.OUT_TOP_MID, 0, -15) # label的中间与滑块的上外边框中间对齐,然后y向上15像素 x不变
def slider_event_cb(self, evt):
slider = evt.get_target()
# 修改label的值
self.label.set_text(str(slider.get_value()))
# 3. 创建要显示的组件
MyWidget(scr)
# 4. 显示screen对象中的内容
lv.scr_load(scr)
# ------------------------------ 看门狗,用来重启ESP32设备 --start------------------------
try:
from machine import WDT
wdt = WDT(timeout=5000) # enable it with a timeout of 2s
print("提示: 按下键盘Ctrl+C键结束程序")
while True:
wdt.feed()
time.sleep(0.9)
except KeyboardInterrupt as ret:
print("程序停止运行,ESP32已经重启...")
time.sleep(10)
# ------------------------------ 看门狗,用来重启ESP32设备 --stop-------------------------