【学习K230-例程12】GT6700-TOUCH(触摸屏)

B站视频


触摸屏

电阻屏
  • 工作原理:通过两层导电层(通常为ITO薄膜)受压接触来检测触摸位置。
  • 特点:
    *可用手指、触控笔等任何物体操作。
    *成本较低。
    *耐用性较差,长时间使用后可能失灵。
    *透光率较低,显示效果稍差。
    *不支持多点触控。
电容屏
  • 工作原理:利用人体电流感应,通过触摸改变电场来定位。
  • 特点:
    *仅对导电物体(如手指)有反应。
    *成本较高。
    *耐用性较好,表面通常为玻璃。
    *透光率高,显示效果更佳。
    *支持多点触控。
  开发板采用的屏幕和目前最常用的手机屏幕一样,是由IPS液晶显示屏和触摸板上下粘合组成。触摸板是电容触摸的,其内部驱动是GT911,与官方使用的不同,所以在程序中我们需要配置下触摸屏。触摸屏通信接口原理图如下图所示:
在这里插入图片描述
从上图可以得知,触摸驱动使用I2C3与K230通信。K230的IO接口GPIO36、GPIO37连接I2C3如下图所示:
在这里插入图片描述
在实现功能前,先建立与触摸屏的I2C通信,完成配置工作,才可以在后续代码中使用触摸功能。

代码展示

from machine import FPIOA, I2C, TOUCH       #导入FPIOA,I2C,TOUCH模块
from media.display import *                 #导入display模块
from media.media import *                   #导入media模块
import time, os, urandom, sys               #导入time,os, urandom,sys模块

DISPLAY_WIDTH = ALIGN_UP(800, 16)           #定义显示长尺寸
DISPLAY_HEIGHT = 480                        #定义显示宽尺寸

fpioa = FPIOA()                             #定义FPIOA
fpioa.set_function(36, FPIOA.IIC3_SCL)      # GPIO36 i2c3 SCL
fpioa.set_function(37, FPIOA.IIC3_SDA)      # GPIO37 i2c3 SDA
i2c3=I2C(3)                                 #定义I2C
print(i2c3.scan())
tp = TOUCH(1, i2c = i2c3,                   #定义 TOUCH 设备
            slave_addr = 93, type = TOUCH.TYPE_GT911)

def display_test():
    print("display and touch test")
    img = image.Image(DISPLAY_WIDTH,        #创建用于绘制的图像
                        DISPLAY_HEIGHT, image.ARGB8888)
    img.clear()                             #清理图像
    img2 = image.Image(DISPLAY_WIDTH,       #创建用于绘制的图像
                        DISPLAY_HEIGHT, image.ARGB8888)
    img2.clear()
    Display.init(Display.ST7701,            #使用 LCD 作为显示输出
                    width = DISPLAY_WIDTH, height = DISPLAY_HEIGHT, to_ide = True)
    MediaManager.init()                     #初始化媒体管理器

    try:
        while True:
            os.exitpoint()
            point = tp.read(1)
            if len(point):
                print(point)
                pt = point[0]
                # 打印触摸点的坐标,并且用十字符合标记
                if pt.event == 0 or pt.event == TOUCH.EVENT_DOWN or pt.event == TOUCH.EVENT_MOVE:
                    img2.draw_cross(pt.y,480 -  pt.x, color=(255,0,0), width = 1, think_ness = 1)
                    Display.show_image(img2, layer = Display.LAYER_OSD2, alpha = 128)
            x = (urandom.getrandbits(11) % img.width())
            y = (urandom.getrandbits(11) % img.height())
            img.draw_string_advanced(x,y,32,# 在图像的坐标点绘制文字
                                "Hello World!,你好世界!!!", color = (0, 0, 255),)
            Display.show_image(img)         # 将绘制的图像显示
            img.clear()
            time.sleep(0.05)
    except KeyboardInterrupt as e:
        print("user stop: ", e)
    except BaseException as e:
        print(f"Exception {e}")

    img.clear()                             #清理绘制图
    Display.show_image(img)                 #销毁显示
    Display.deinit()                        #销毁显示
    os.exitpoint(os.EXITPOINT_ENABLE_SLEEP)
    time.sleep_ms(100)
    MediaManager.deinit()                   #释放媒体缓冲区

if __name__ == "__main__":
    os.exitpoint(os.EXITPOINT_ENABLE)
    display_test()


效果展示

  点击开始执行后,用手指触摸电容屏,可以看到终端打印出坐标信息。在这里插入图片描述

【学习k230 - 例程12】TOUCH

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值