1.绘制图形
import lcd, image
#初始化lcd和image
lcd.init()
img = image.Image(size=(lcd.width(), lcd.height()))
#填充背景颜色为(0, 81, 137)
img.draw_rectangle((0, 0, lcd.width(), lcd.height()), fill=True, color=(0, 81, 137))
#在(50,10)位置显示“Hello”字符串
img.draw_string(50, 10, "Hello", color=(255, 255, 255), scale=2)
#在(50,50)位置画线
img.draw_line(50, 50, 200, 50, color=(100, 0, 0), thickness=5)
#在(50,60)位置画个矩形
img.draw_rectangle(50, 60, 150, 150, color=(0, 100, 0), thickness=2, fill=True)
#在(125,135)位置画个圆
img.draw_circle(125, 135, 50, color=(255, 255, 255), thickness=2, fill=True)
lcd.display(img)
2.按钮和点击事件
模块的出厂固件已经集成lvgl图形化
# 导入相关库
import lvgl as lv
import lvgl_helper as lv_h
import lcd
import time
from machine import Timer
import touchscreen as ts
#初始化lcd、触摸板和lvgl
lcd.init()
ts.init()
lv.init()
#将K210的屏幕驱动对接到lvgl的显示注册接口。
disp_buf1 = lv.disp_buf_t()
buf1_1 = bytearray(320*10)
lv.disp_buf_init(disp_buf1, buf1_1, None, len(buf1_1)//4)
disp_drv = lv.disp_drv_t()
lv.disp_drv_init(disp_drv)
disp_drv.buffer = disp_buf1
disp_drv.flush_cb = lv_h.flush
disp_drv.hor_res = 320
disp_drv.ver_res = 240
lv.disp_drv_register(disp_drv)
#将K210的触摸板驱动对接到lvgl的输入注册接口
indev_drv = lv.indev_drv_t()
lv.indev_drv_init(indev_drv)
indev_drv.type = lv.INDEV_TYPE.POINTER
indev_drv.read_cb = lv_h.read
lv.indev_drv_register(indev_drv)
#新建一个按钮,并显示名称为"Button"
scr = lv.obj()
btn = lv.btn(scr)
btn.align(lv.scr_act(), lv.ALIGN.CENTER, 0, 0)
label = lv.label(btn)
label.set_text("Button")
label.set_size(20,20)
lv.scr_load(scr)
#按钮按下的处理事件为:每次检测到按钮按下,则btn_count自动加1,并显示在按钮上
btn_count = 0
def on_btn_cb(obj, event):
global btn_count
if event == lv.EVENT.CLICKED:
btn_count += 1
label.set_text(str(btn_count))
print("Button Press:", btn_count)
btn.set_event_cb(on_btn_cb)
#由于lvgl的图像需要实时更新,所以需要每5毫秒刷新一次lvgl的任务
tim = time.ticks_ms()
while True:
if time.ticks_ms()-tim > 5:
tim = time.ticks_ms()
lv.task_handler()
lv.tick_inc(5)