注意

这是最新开发分支配套的文档,可能包含已发布版本中尚未提供的功能。如果您要查看特定版本的文档,请使用左侧的下拉菜单并选择所需要的版本。

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(dev, *, rotate=-1, range_x=-1, range_y=-1, i2c=None, rst=None, int=None)

创建触摸屏实例,dev=0 表示系统默认,dev!=0 为自定义设备,详见下文参数

read([count])

返回当前触摸点信息,返回元组,每个元素为 TOUCH_INFO 对象,count 为最多读取的触点数(默认1)

deinit()

释放触摸资源

构造函数参数说明#

  • dev: 触摸设备号,0为系统默认,非0为自定义设备。

  • rotate: 坐标旋转,见常量,默认-1(使用设备默认)。

  • range_x, range_y: 仅自定义设备有效,指定触摸屏分辨率。

  • i2c: 仅自定义设备有效,I2C总线对象,必填。

  • rst, int: 仅自定义设备有效,复位/中断引脚对象,选填。

  • 其余参数已废弃。

TOUCH_INFO 对象属性#

  • event: 事件码,见常量

  • track_id: 触点ID

  • width: 触点宽度

  • 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_CST226SE

  • TOUCH.TYPE_CST328

  • TOUCH.TYPE_GT911

应用场景#

场景

示例

图形界面交互

基于触摸点驱动按钮点击、滑动切换

自定义手势识别

多点滑动、旋转等操作识别

简单绘图板或签名板

基于触点轨迹做线条绘制

常见问题#

Q:没有读取到触摸点,返回是空元组? A:此时说明屏幕未被触摸。tp.read() 只在屏幕被按下时返回触点。

Q:如何处理多点触控? A:读取到的是一个包含多个 TOUCH_INFO 的元组,使用 for 循环逐个读取即可。

Q:是否支持旋转坐标系? A:支持,通过 rotate 参数(如 TOUCH.ROTATE_90)可开启坐标旋转。

延伸阅读#

评论列表
条评论
登录