• 单片机触摸屏校准


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

    第一种情况

    假设显示屏

    假设触摸贴膜

    如果把这张膜贴到显示屏上,,那就不需要校准了,,,,,,,,,,触摸得到的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);

  • 相关阅读:
    【SPOJ】6779 Can you answer these queries VII
    【SPOJ】1557 Can you answer these queries II
    【SPOJ】2916 Can you answer these queries V
    【CodeForces】86D Powerful array
    【SPOJ】1043 Can you answer these queries I
    【HDU】3727 Jewel
    【HDU】3915 Game
    【SPOJ】1043 Can you answer these queries III
    【SPOJ】2713 Can you answer these queries IV
    成为一名更好的软件工程师的简单方法
  • 原文地址:https://www.cnblogs.com/yangfengwu/p/6759950.html
Copyright © 2020-2023  润新知