电阻屏和电容屏

目录

一、电阻屏

1.欧姆定律

2.电阻屏原理

(1)测量 X 坐标

(2)测量 Y 坐标

3.电阻屏数据

二、电阻屏

1.原理

2.电容屏数据

(1)Type A

(2)Type B

3.电容屏的实验数据


一、电阻屏

触摸屏分为电阻屏、电容屏。电阻屏结构简单,在以前很流行;电容屏支持多点触摸,现在的手机基本都是使用电容屏。

注意:

LCD、触摸屏不是一回事,LCD 是输出设备,触摸屏是输入设备。制作触摸屏时特意把它的尺寸做得跟 LCD 一模一样,并且把触摸屏覆盖在 LCD 上。

1.欧姆定律

图中的电阻假设是均匀的,就是长度和阻值成正比关系。电阻长度为 L,阻值为 R,在两端施加 3.3V 电压。在某点测得电阻为 V,求上图中长度 X。 根据欧姆定律:3.3/R = V/Rx,

根据欧姆定律:3.3/R = V/Rx, 因为长度和阻值成正比关系,上述公式转换为:3.3/L = V/X,所以X=LV/3.3。

2.电阻屏原理

电阻屏就是基于欧姆定律制作的,它有上下两层薄膜,这两层薄膜就是两个电阻,如下图所示:

平时上下两层薄膜无触触,当点击触摸屏时,上下两层薄膜接触:这时就可以测量触点电压。

过程如下:

(1)测量 X 坐标

在 xp、xm 两端施加 3.3V 电压,yp 和 ym 不施加电压(yp 就相当于探针), 测量 yp 电压值。该电压值就跟 X 坐标成正比关系,假设: X = 3.3*Vyp/Xmax

(2)测量 Y 坐标

在 yp、ym 两端施加 3.3V 电压,xp 和 xm 不施加电压(xp 就相当于探针), 测量 xp 电压值。该电压值就跟 Y 坐标成正比关系,假设: Y = 3.3*Vxp/Ymax

在实际使用时,电阻屏的 Xmax、Ymax 无从得知,所以使用之前要先较准: 依次点击触摸屏的四个角和中心点,推算出 X、Y 坐标的公式:X = func(Vyp),Y = func(Vxp)

3.电阻屏数据

Linux 驱动程序中,会上报触点的 X、Y 数据,注意:这不是 LCD 的坐标值, 需要 APP 再次处理才能转换为 LCD 坐标值。

对应的 input_event 结构体中,“type、code、value”如下:

按下时:

松开时:

二、电阻屏

1.原理

电容屏中有一个控制芯片,它会周期性产生驱动信号,接收电极接收到信号, 并可测量电荷大小。当电容屏被按下时,相当于引入了新的电容,从而影响了接 收电极接收到的电荷大小。主控芯片根据电荷大小即可计算出触点位置。

怎么通过电荷计算出触点位置?这由控制芯片实现,这类芯片一般是 I2C 接口。

我们只需要编写程序,通过 I2C 读取芯片寄存器即可得到这些数据。

2.电容屏数据

电容屏可以支持多点触摸(Multi touch),驱动程序上报的数据中怎么分辨触点?

这有两种方法:Type A、Type B,这也对应两种类型的触摸屏:

(1)Type A

该类型的触摸屏不能分辨是哪一个触点,它只是把所有触点的坐标一股脑地上报,由软件来分辨这些数据分别属于哪一个触点。

Type A 已经过时,Linux 内核中都没有 Type A 的源码了。

(2)Type B

该类型的触摸屏能分辨是哪一个触点,上报数据时会先上报触点 ID,再上报它的数据。

具体例子如下,这是最简单的示例,使用场景分析来看看它上报的数据。

当有 2 个触点时(type, code, value):

当 ID 为 45 的触点正在移动时:

松开 ID 为 45 的触点时(在前面 slot 已经被设置为 0,这里这需要再重新设置 slot,slot 就像一个全局变量一样:如果它没变化的话,就无需再次设置):

最后,松开 ID 为 46 的触点:

3.电容屏的实验数据

假设你的开发板上电容屏对应的设备节点是/dev/input/event,执行以下命令:

hexdump /dev/input/event1

然后用一个手指点击触摸屏,得到类似下图数据:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/35947.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实战案例:如何用ChatGPT生成适合不同领域的高质量文章

随着人工智能技术的飞速发展,生成高质量文章已经不再是难题。特别是OpenAI开发的ChatGPT,更是为写作工作带来了极大的便利。那么,如何用ChatGPT生成适合不同领域的高质量文章呢?本文将通过实战案例,为大家详细讲解这一…

ARM 240625

练习: 汇编实现1-100累加,结果保存在r0 .text 声明下面内容都属于文本段内容 .globl _start 声明 _start 是一个全局启用的标签_start: 封装 _start 标签,汇编的标签和C中函数类似mov r0,#0 mov 把0 搬运到 r0 寄存器mov r1,#1 mov 把1 …

DWC USB2.0协议学习2--架构介绍

目录 1 系统级架构 1.1 DWC_otg PMU模块 1.2 DWC_otg层次结构框图 1.3 DWC_otg功能模块框图 1.4 USB Host体系结构 1.4.1 发送FIFO 1.4.2 接收FIFO 1.5 USB Device体系结构 1.5.1专用发送FIFO 1.5.2 单个接收FIFO 2 DWC_otg_core架构 2.1 AHB总线接口单元(BIU) 2.2…

SAP揭秘者-在QM标准功能增加取消UD的功能第二季

文章摘要: 上篇文章我已经给大家介绍怎么开发两个程序来取消UD,但是上篇文章中有提到这个时候去直接执行ZQEVAC40程序去取消物料凭证 则会报错,那么为了解决这个报错,我们需要更改后台配置。 接下来我给大家讲后台配置该怎么配置&…

浅谈Tomcat

文章目录 一、什么是Tomcat?二、Tomcat的下载安装三、使用tomcat访问资源 一、什么是Tomcat? Tomcat 就是一个 HTTP 服务器。 前面我们聊了HTTP服务器,像我们在网页输入URL,其实就是在给人家的HTTP服务器发送请求,既…

华为MDC开发者调试工具以及配置使用介绍

MDC的开发过程的三大工具:MMC、MDS、Mind Studio,这三个工具完成了开发过程中的配置文件编写、代码编写以及AI模型的开发三个任务。除了开发,MDC还准备了两个调试工具,用于使用过程中数据的查看等。这一些调试工具分别对映射MDC中…

802.11漫游流程简单解析与笔记_Part2_02_wpa_supplicant、cfg80211、nl80211内核与驱动的关系

wpa、cfg80211、nl80211内核与驱动的关系示意图如下: nl80211和cfg80211都是内核定义的标准接口,目的是规范驱动和应用的统一调用,wpa中常出现nl80211就是通过内核的nl80211接口调用对应cfg80211的部分,进而控制驱动收发数据或切换…

AI技术与艺术的融合:开创性的用户界面与产品体验

引言 近年来,人工智能(AI)的飞速发展改变了我们的生活和工作方式。AI技术不仅在算力和模型上取得了重大进步,更在用户界面和产品体验方面迎来了突破。近日,科技博客 Stratechery 的文章以及硅谷投资基金 AI Grant 的两…

高频面试题基本总结回顾2(含笔试高频算法整理)

干货分享,感谢您的阅读! (暂存篇---后续会删除,完整版和持续更新见高频面试题基本总结回顾(含笔试高频算法整理)) 备注:引用请标注出处,同时存在的问题请在相关博客留言…

没有采用框架的LeSS导入

我提倡在使用LeSS中平衡框架导向和实验导向。因为框架导向已经挺强了,我想更多地展开实验导向。有可能不采用LeSS框架来导入LeSS吗?我认为是可能的,因为那其实就是受LeSS实验启发的持续改进。 受LeSS实验启发的持续改进 让我来分两部分加以…

Docker 命令——安全

我们将学习两个命令。第一个命令是 docker container run 命令,这样你就能看到使用该命令的一些好处。其次,我们将看看 docker container diff 命令,你可以用它来查看在已有的镜像基础上做了什么。让我们看看如何使用这两个命令来确保容器的安…

深度学习在蛋白质结构预测的新突破:AlphaFold、RoseTTAFold与ESMFold

在蛋白质结构预测和功能预测领域,基于机器学习的方法最近取得了显著的进展。特别是深度学习技术在这个领域中展现出了强大的能力,代表性的技术有 DeepMind 的 AlphaFold 和 RoseTTAFold。这些技术利用了大量的生物数据和先进的神经网络架构,极…

调试代码Pair-wise-Similarity-module-master

第一步:运行.py文件生成json文件 问题一:json.decoder.JSONDecodeError: Invalid \escape: line 1 column 31616 (char 31615) 解决: for dataset in dataset_list:with open(datasetmap[dataset] ".csv", "r") as li…

什么是Arkose Labs挑战及其解决方法

Arkose Labs挑战是一种复杂的机制,旨在验证用户是真正的人类,而不是自动化的机器人或脚本。这一挑战在维护在线服务的安全性和完整性方面发挥着关键作用,通过防止欺诈活动并确保只有真实用户才能访问某些功能。 目录 什么是Arkose Labs挑战&a…

Python 基础 (标准库):堆 heap

1. 官方文档 heapq --- 堆队列算法 — Python 3.12.4 文档 2. 相关概念 堆 heap 是一种具体的数据结构(concrete data structures);优先级队列 priority queue 是一种抽象的数据结构(abstract data structures)&…

微信小程序-自定义组件checkbox

一.自定义Coponent组件 公共组件:将页面内公共的模块抽取为自定义组件,在不同页面复用。 页面组件:将复杂页面进行拆分,降低耦合度,有利于代码维护。 可以新建文件夹component放组件: 组件名为custom-che…

【计算机网络仿真】b站湖科大教书匠思科Packet Tracer——实验3 总线型以太网的特性(广播,竞争总线,冲突)

一、实验目的 1.验证总线型以太网的特性; 2.验证广播特性; 3.验证各主机对总线的竞争使用以及可能产生的碰撞。 二、实验要求 1.使用Cisco Packet Tracer仿真平台; 2.观看B站湖科大教书匠仿真实验视频,完成对应实验。 三、实验内容…

PatchMixer:一种用于长时间序列预测的Patch混合架构

前言 《PatchMixer: A Patch-Mixing Architecture for Long-Term Time Series Forecasting》原文地址,Github开源代码地址GitHub项目地址Some-Paper-CN。本项目是译者在学习长时间序列预测、CV、NLP和机器学习过程中精读的一些论文,并对其进行了中文翻译…

软件测试学习笔记丨JUnit5执行顺序

本文转自测试人社区,原文链接: https://ceshiren.com/t/topic/28025 指定顺序使用场景 测试用例有业务逻辑相关集成测试(主流程测试) 排序方式 方法排序类排序Suite官方网站没有明确说明默认排序的具体规则 方法排序的类型 方法排序-Order 注解指定排序 …

python中的nan是什么意思

NaN(not a number),在数学表示上表示一个无法表示的数,这里一般还会有另一个表述inf,inf和nan的不同在于,inf是一个超过浮点表示范围的浮点数(其本质仍然是一个数,只是他无穷大&…