本节课主要学习绘制按钮和按钮点击功能。
本次实验的参考代码路径为:CanMV\04-GUI\button.py
模块的出厂固件已经集成lvgl图形化库,如果下载过其他固件,请烧录回出厂固件再进行实验。
import lvgl as lv
import lvgl_helper as lv_h
import lcd
import time
from machine import Timer
import touchscreen as ts
xxxxxxxxxx
lcd.init()
ts.init()
lv.init()
xxxxxxxxxx
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)
xxxxxxxxxx
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)
xxxxxxxxxx
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.set_event_cb(on_btn_cb)
xxxxxxxxxx
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)
xxxxxxxxxx
tim = time.ticks_ms()
while True:
if time.ticks_ms()-tim > 5:
tim = time.ticks_ms()
lv.task_handler()
lv.tick_inc(5)
将K210模块通过microUSB数据线连接到电脑上,CanMV IDE点击连接按钮,连接完成后点击运行按钮,运行例程代码。也可以将代码作为main.py下载到K210模块上运行。
可以看到LCD显示屏中间显示一个蓝色的"Button"按钮,每次触摸按钮,按钮上的数字就会自动加1。
如果需要再次运行程序,请重新连接,避免按钮增加数字叠加的问题。
使用CanMV IDE,搭配出厂固件写好的MicroPython语法,可以非常方便绘制按钮和处理按钮触摸事件。按钮触摸事件处理最好不要打印数据,这里只是作为演示方便才加上打印数据。