最近在调试IMX515 wince的触摸驱动,奇怪的问题就此展现给大家。
一般来说触摸屏越大越容易抖动,但是我经过测试发现,我们的7寸屏,8寸屏一点都不抖动,反而4.3寸屏,抖动的厉害。
去抖的方法,最多的是多次采样,排序掐头去尾,中间求平均。然后采样值之间的采样绝对值,遵循一个阈值设定。
但是这次这些招数不管用了,经过打印采集点看到,采集的数都在很小的范围内抖动,所以可以用一种方法来实现,去抖。
这里只介绍方法原理,源码就很简单了:
抖动的实质就是,按住一个点,而频繁采集,会得到多个值,这些值都传给系统,导致系统认为多个点按下,从屏幕反映出来的本质就是所谓的抖动。
了解了抖动的本质就可以对症下药了,(注意,这种方法,只适合很小范围的抖动,我这里最终找到的范围是采样误差绝对值在6以内),首先本次采集的点用上述的求平均,设阈值的方法处理之后,然后再跟上次采集处理的点做对比,如果在6以内,则默认上次的值,否则使用新值。
经过上面的思路编程后发现,触摸屏一点都不抖了。阿弥陀佛,终于把这个问题给阉割掉了,两天的痛啊。
心得:做事情,什么最重要,方法,方法怎么得到,是在了解了事情的本质之后得到的。这个道理放之四海而皆准,例如医生看病也是如此。