xiongyihui / notes

Notes
https://xiongyihui.github.io/notes/
3 stars 0 forks source link

矩阵键盘防抖 #30

Open xiongyihui opened 4 years ago

xiongyihui commented 4 years ago

最近在优化键盘防抖的代码,来说说按键防抖 。 机械按键在被按下或释放的时候容易发生抖动,如果用示波器观察,信号可能是这样的 image

from https://en.wikipedia.org/wiki/Switch#Contact_bounce

这里假设我们每个1毫秒扫描一次矩阵键盘,第t次扫描,k(t) = 1则检测到按键按下,k(t) = 0则未按下。

两种防抖策略:

  1. 稳定优先防抖,采用均值滤波

    通过n次扫描的平均值avg(t)判断按键按下或释放,avg(t) = Σk(t)/n t=(t-n, t],如果要求avg(t) >= 1,则要求最近n次测量都为1。

  2. 响应优先防抖

    如果第t次扫描的前面的n次扫描都为相同,第t次发生变化,立即判断,k(t) = 1则按键按下,k(t) = 0测按键释放。

参考: https://github.com/thomasfredericks/Bounce2