TouchSlidR

首先感谢:蓝可析 bilibili

从这位才华横溢大佬的开源项目中,我学到了很多比较新奇的知识,为此新开一篇文章用以记录。

1. 引入

在我们学习stm32时,我们接触过TFT 电阻式触摸屏,在使用的过程中,我们经常使用四点校准法 对触摸精度进行参数矫正。

那么问题来了,怎样实现的呢。

image-20240621135229165

1.1 四点校准法理论

在我们使用比较古老的触摸手机是,经常会看到一个功能,就是点击屏幕四脚处的点,用以矫正触摸精度,例如:

image-20240621135859630

首先,预先知道四点的位置信息,如图:(x1,y1)、(x2,y2)、(x3,y3)、(x4,y4)

其次,触摸屏采集我们点击屏幕的位置信息,即:(t1,k1)、(t2,k2)、(t3,k3)、(t4,k4)

最后,假设显示屏分辨率:W * H。

则:

  1. 判断触摸是否为有效触摸,**判断依据为横纵坐标比例因子,**即:

计算点1到点2的横向距离:

d1=(t1t0)2(k1k0)2d_{1} =\sqrt{(t_{1}-t_{0})^2-(k_{1}-k_{0})^2}

计算点3到点4的横向距离:

d2=(t4t3)2(k4k3)2d_{2} =\sqrt{(t_{4}-t_{3})^2-(k_{4}-k_{3})^2}

计算坐标比例因子:

ph=d1d2ph=\frac{d_{1}}{d_{2}}

结论:若0.95<ph<1.05,触摸数据为有效数据。

  1. 若触摸数据有效,开始计算偏移量,即:

计算横向比例因子:

Kx=2Wx1x2t2t1K_{x}=\frac{2W-x1-x2}{\left |t2-t1 \right | }

计算横向偏差量:

Bx=WKx(t1+t2)2B_{x}=\frac{W-K_{x}(t1+t2)}{2}

计算纵向比例因子:

Ky=2Hy3y1k3k1K_{y}=\frac{2H-y3-y1}{\left |k3-k1 \right | }

计算纵向偏差量:

By=HKy(k3+k1)2B_{y}=\frac{H-K_{y}(k3+k1)}{2}

  1. 计算完成