绘制加提交的两段式
K10 板载 2.8 英寸彩色 LCD,分辨率 240×320。不管用图形化积木还是 MicroPython 接口,操作这块屏幕都分两段:先把内容绘制进缓存,再提交显示。screen.draw_text 这类绘制接口只把内容写进内存,调用 screen.show_draw() 之后,整幅画面才被推上屏幕;清屏用 screen.clear()。
分两段的好处是不闪烁。一屏画面往往同时有背景色、多行文字和图形,攒齐了一次性提交,比每画一笔就刷一次屏干净得多。反过来,只绘制不提交,或者改了画面忘了再次提交,屏幕就停在旧画面上,看上去像程序没跑。
MicroPython:从初始化到清屏
官方 unihiker_k10 库文档给出的屏幕示例覆盖初始化、背景、文字、提交、清屏五个动作,逐字引用如下:
from unihiker_k10 import screen
screen.init(dir=2) # 方向 0-3,不调用时默认 2
screen.show_bg(color=0xFFFF00)
screen.draw_text(text="你好\n23",x=10,y=0,font_size=24,color=0xFF0000)
screen.show_draw()
screen.clear()
按运行顺序拆开,每一步的操作与预期结果:
- 初始化:screen.init(dir=2) 设屏幕方向,参数取 0 到 3,不调用时默认为 2。预期结果:程序不报错,后续绘制在此基础上进行。
- 画背景:screen.show_bg(color=0xFFFF00) 把背景色写入缓存。预期结果:屏幕暂时没有变化。
- 写文字:screen.draw_text 传入 text、x、y、font_size、color,坐标以屏幕左上角为原点,text 里可以用 \n 换行。预期结果:文字仍在缓存里,屏幕不显示。
- 提交显示:screen.show_draw() 把缓存整幅推上屏幕。预期结果:背景色上出现文字,一次成帧,不逐字闪现。
- 清屏:screen.clear() 清除屏幕内容。预期结果:屏幕回到空白,可以画下一幅。示例里紧跟在提交后是为了演示接口顺序,实际程序在需要换画面时再调用。
图形化积木的对应做法
Mind+ 侧是同一套逻辑:「缓存显示文字」把文字写进缓存,「将缓存内容显示 / 显示更新」提交。最小流程是打开 Mind+(V1.8.1 RC1.0 及以上才能加载 K10 扩展),切换到上传模式,在扩展里加载行空板 K10,数据线连接设备并选择串口,拖入这两块积木,点「上传到设备」。预期结果:上传完成,屏幕显示所写的文字。
图形积木可以画点、按起止坐标画线、按圆心半径画圆、按左上角坐标和宽高画矩形,圆和矩形都能设边框色与填充色。两个细节容易忽略:点的大小不可改;线宽与边框宽要用设置积木先设定,没调用过时默认是 1。
二维码积木把文字或 URL 转成二维码显示在屏幕上。清除时「Clear Screen」积木不起作用,必须用「clear QR code」积木,二维码的清除方式和其他内容不一样。
显示积木的放置限制
官方 FAQ 提示:屏幕显示类积木不要放进回调函数、线程、MQTT 接收、中断等 hat block 内。
遵守这条限制的做法是把屏幕操作统一放在主循环里,回调、线程、MQTT 接收和中断内只更新变量,由主循环读取变量后重绘并提交。
MicroPython 与图形化的固件互切
跑 MicroPython 代码前要先烧录对应固件,官方说明该固件处于测试阶段,可能有 bug。烧录之后想回到 Mind+ 图形化,要在 Mind+ V1 里执行「恢复初始设置」,或在 Mind+ V2 连接 K10 后执行「擦除」。恢复操作先按住 BOOT 再接数据线,识别出端口后松开,再按 RST 复位。
在 Thonny 里写代码时,文件要保存为 main.py 并存到 MicroPython 设备;只存到此电脑,设备重启后程序会丢失。
常见故障
程序在跑,屏幕没反应:多半是只绘制没提交。检查代码里有没有 screen.show_draw(),图形化里对应「将缓存内容显示 / 显示更新」积木,补上再运行。
上传时找不到端口:优先换官方数据线、直连电脑原生 USB 口,避开不供电的 HUB。Windows 10 与 11 通常免驱,Windows 7 需要手动安装串口驱动。
Mind+ 报 spawn ENAMETOOLONG:Mind+ 的解压路径过长或含中文、括号,挪到简短的纯英文路径后重试。
上传后设备持续重启:用「恢复设备初始化设置」或 Mind+ V2 的「擦除」处理,恢复时按住 BOOT 再接 USB,识别到端口后松开。
屏幕能稳定显示之后,可以把板载温湿度、光线和加速度的读数用 screen.draw_text 刷上屏,读数方法见传感器页。