单片机触摸屏校准

简介: 触摸屏就是显示屏加触摸贴膜第一种情况假设显示屏 假设触摸贴膜如果把这张膜贴到显示屏上,,那就不需要校准了,,,,,,,,,,触摸得到的X轴和Y轴的数字量正好与显示屏相等了.....只能说想的美 第二种情况 显示屏不变   触摸贴膜呢   有没有发现   1100 - ...

触摸屏就是显示屏加触摸贴膜

第一种情况

假设显示屏

 

假设触摸贴膜

如果把这张膜贴到显示屏上,,那就不需要校准了,,,,,,,,,,触摸得到的X轴和Y轴的数字量正好与显示屏相等了.....只能说想的美

 

第二种情况

 显示屏不变

  

 

触摸贴膜呢

 

 

 有没有发现   1100 - 300 = 800 

                  700 - 100 = 600

坐标之间的差值只好等于显示屏的长和宽,,只是触摸贴膜向左偏移了300,向上偏移了100,,,,,,,

假设显示屏上有这么一个红色的区域

要求是如果触摸到了这块区域那么就执行一些事情

如果按照上面的触摸的X轴与Y轴就是

if(Touch_X>=300 && Touch_X<=300+250 && Touch_Y>=100 && Touch_Y<=100+150)

{

  //执行相应的操作

}

这样也能实现所要的功能,,但是呢,这比较麻烦,考虑的事情太多,最好还是先把触摸的坐标转换为显示屏的坐标

那么如果触摸了一个点(Touch_X,Touch_Y)就要需要转换为显示屏的对应的点(Screen_X,Screen_Y),这样的话方便

对于上面那样就是

Screen_X = (Touch_X - 300)*800/(1100 - 300);

 

800/(1100-300)   就是每一个触摸点的距离对应显示屏的距离值

Touch_X - 300    是因为本身触摸向左偏移了300,,,也可以想成显示屏向右偏移了300

这样的话点击了301  就对应了显示屏的1

Screen_Y = (Touch_Y - 100)*600/(700 - 100);

假设(Touch_X,Touch_Y) = (300+250,100+150)

那么换算为显示屏的坐标就为

Screen_X =  (300+250- 300)*800/(1100 - 300) = 250;

Screen_Y = (100+150- 100)*600/(700 - 100) = 150;

那么

if(Screen_X >=0&& Screen_X <=250 && Screen_Y >=0&& Screen_Y <=150)

{

  //执行相应的操作

}

 但是呢我们怎么会事先知道屏幕到底偏移了多少呢??我们可以点击屏幕的角点(四个角)获得

但是呢,,,凭自己的感觉感觉感觉,,,如果屏幕的角点遮挡住了怎么办,,,再者说,角点哪有这么好点的,其实我也能看到角在哪,但是我却不确信自己点的是不是角

那就另一种方式

事先在显示屏上显示三个点()

 

这三个点的坐标(显示屏的)我是知道的

    假设设置的是(x1,y1) = (80,80)

                     (x2,y2) = (800-80,600-80)

                     (x3,y3) = (80,600-80)

然后呢我点击第一个点,会得到一个触摸的

Touch_X1,Touch_Y1

点击第二个会得到   Touch_X2,Touch_Y2

点击第三个会得到   Touch_X3,Touch_Y3

 

第一步咱们要算出偏移量 Offset_X,就是说触摸贴膜对应显示屏偏移了多少

                                       

 (x2 - x1)/(Touch_X2 - Touch_X1) = x1/TouchLength_X 

那么偏移的距离 Offset_X = Touch_X1 - TouchLength_X ;

 

同理

(Y3 - Y1)/(Touch_Y3 - Touch_Y1) = Y1/TouchLength_Y 

那么偏移的距离 Offset_Y = Touch_Y1- TouchLength_Y ;

 

 那么对应到显示屏上

Screen_X = (Touch_X - Offset_X)*(x2 - x1)/(Touch_X2 - Touch_X1);

Screen_Y = (Touch_Y - Offset_Y)*(Y3 - x1)/(Touch_Y3 - Touch_Y1);

 

目录
相关文章
【单片机】按键声光报警实验(蜂鸣器)
【单片机】按键声光报警实验(蜂鸣器)
708 0
|
传感器
Arduino光敏传感器控制LED灯亮度
Arduino光敏传感器控制LED灯亮度
|
4月前
|
传感器 安全
基于Arduino的分体式显示器时钟
基于Arduino的分体式显示器时钟
45 2
|
传感器 芯片
可编程 USB 转串口适配器开发板与振弦传感器测量模块
当通过 IIC 接口修改 VM5xx 单个寄存器后,被修改的寄存器立即保存(断电不丢失),但连续寄存器的写入仅当时修改生效,模块重启后会自动恢复。为了能够使寄存器永久保存,可以单独向功能寄存器 03 写入指令码 0x000C 来强制保存所有寄存器。
可编程 USB 转串口适配器开发板与振弦传感器测量模块
|
安全 IDE 开发工具
了解有源和无源蜂鸣器的区别以及如何在Arduino中使用它
在本文中,我们将探索蜂鸣器的内部结构,检查其内部结构,并对其工作系统有更深入的了解。在这里,我们讨论一下有源蜂鸣器和无源蜂鸣器的区别。该设备的主要功能是将电信号转换为音频声音。蜂鸣器可分为有源蜂鸣器和无源蜂鸣器两种不同类型,它们都是极化的。
2707 0
LabVIEW控制Arduino实现PWM呼吸灯(基础篇—5)
利用LIAT中的模拟I/O函数库,通过LabVIEW和Arduino Uno控制板实现LED灯亮度的调节,产生灯会呼吸的效果。
|
数据处理
LabVIEW串口示波器
之前的博文分享过LabVIEW虚拟数字示波器,虚拟示波器的数据来自于软件模拟,本篇博文将分享一款串口示波器,LabVIEW设计上位机,数据来自于节点上传(STM32)。 上位机使用LabVIEW技术实现三通道示波器,实现数据处理和显示,支持多种触发方式,支持实时采集,可以对信号进行加窗处理,并具有FFT频谱分析等功能。
|
传感器 前端开发 机器人
基于单片机的智能循迹避障小车STC89C52红外对管L298N驱动PWM波控制速度
利用红外对管检测黑线与障碍物,并以STC89C52单片机为控制芯片控制电动小汽车的速度及转向,从而实现自动循迹避障的功能。其中小车驱动由L298N驱动电路完成,速度由单片机输出的PWM波控制。
415 0
|
算法 机器人 芯片
利用单片机PWM信号占空比进行舵机控制
基于单片机的舵机控制方法具有简单、精度高、成本低、体积小的特点,并可根据不同的舵机数量加以灵活应用。
272 0
使用示波器测量串口波特率
使用示波器测量串口波特率
550 0
使用示波器测量串口波特率