K230 触摸屏(TOUCH)使用教程#
概述#
K230 支持 电容屏 和 电阻屏 的触摸输入,提供了基于 RT-Smart 封装的 TOUCH 类接口。开发者可使用它读取触点坐标、事件类型等信息,广泛应用于 HMI、交互终端等场景。
快速上手示例#
以下示例展示了如何读取触摸屏上的触点数据:
from machine import TOUCH
# 实例化触摸设备 0(系统默认触摸)
tp = TOUCH(0)
# 读取当前触摸点数据(返回元组,每个元素为 TOUCH_INFO 对象)
p = tp.read()
print(p)
# 如有触摸点,可访问第一个触点的坐标与事件类型
# print(p[0].x) # X 坐标
# print(p[0].y) # Y 坐标
# print(p[0].event) # 事件类型(如 EVENT_DOWN、EVENT_MOVE、EVENT_UP)
接口说明#
接口名 |
说明 |
|---|---|
|
创建触摸屏实例, |
|
返回当前触摸点信息,返回元组,每个元素为 TOUCH_INFO 对象, |
|
释放触摸资源 |
构造函数参数说明#
dev: 触摸设备号,0为系统默认,非0为自定义设备。rotate: 坐标旋转,见常量,默认-1(使用设备默认)。range_x,range_y: 仅自定义设备有效,指定触摸屏分辨率。i2c: 仅自定义设备有效,I2C总线对象,必填。rst,int: 仅自定义设备有效,复位/中断引脚对象,选填。其余参数已废弃。
TOUCH_INFO 对象属性#
event: 事件码,见常量track_id: 触点IDwidth: 触点宽度x: X坐标y: Y坐标timestamp: 时间戳
示例详解#
1. 实例化设备#
# 系统默认触摸
tp = TOUCH(0)
# 自定义触摸设备(需指定i2c,分辨率等)
# tp = TOUCH(1, i2c=my_i2c, range_x=800, range_y=480)
2. 读取触摸数据#
p = tp.read()
print(p)
返回的 p 是一个元组,每个元素为 TOUCH_INFO 对象。每个对象包含:
x: X 坐标y: Y 坐标event: 触摸事件(如 EVENT_DOWN、EVENT_MOVE、EVENT_UP)track_id,width,timestamp等
3. 示例输出参考#
(<TOUCH_INFO x=120 y=65 event=0 ...>,)
如果有多个触点,例如支持多指操作:
(<TOUCH_INFO x=120 y=65 event=0 ...>, <TOUCH_INFO x=250 y=130 event=0 ...>)
常量#
触摸事件#
TOUCH.EVENT_NONE:无事件TOUCH.EVENT_UP:抬起TOUCH.EVENT_DOWN:按下TOUCH.EVENT_MOVE:移动
坐标旋转#
TOUCH.ROTATE_0:不旋转TOUCH.ROTATE_90:旋转90度TOUCH.ROTATE_180:旋转180度TOUCH.ROTATE_270:旋转270度TOUCH.ROTATE_SWAP_XY:XY互换
触摸类型(兼容保留,实际值均为0)#
TOUCH.TYPE_CST226SETOUCH.TYPE_CST328TOUCH.TYPE_GT911
应用场景#
场景 |
示例 |
|---|---|
图形界面交互 |
基于触摸点驱动按钮点击、滑动切换 |
自定义手势识别 |
多点滑动、旋转等操作识别 |
简单绘图板或签名板 |
基于触点轨迹做线条绘制 |
常见问题#
Q:没有读取到触摸点,返回是空元组?
A:此时说明屏幕未被触摸。tp.read() 只在屏幕被按下时返回触点。
Q:如何处理多点触控?
A:读取到的是一个包含多个 TOUCH_INFO 的元组,使用 for 循环逐个读取即可。
Q:是否支持旋转坐标系?
A:支持,通过 rotate 参数(如 TOUCH.ROTATE_90)可开启坐标旋转。
