默れ

ADXL345单双击检测

0
阅读(29342)

 第二个题目是检测单双击动作

ADXL345检测有效单击和双击的敲击中断功能如下图所示:

 设置双击事件的第一次敲击和第二次敲击事件的延迟时间,在此延迟时间内进行第二次有效敲击,检测到两次有效敲击则输出显示“double tap”,若未检测到第二次敲击,则输出显示“single tap”。

设置寄存器THRESH_TAP为0x32,保存敲击中断的阈值,敲击事件的幅度与THRESH_TAP的值比较,以便实现正常敲击检测。

检测双击,需要设置寄存器DUR为0x30,保存敲击事件的最大时间;设置寄存器LATENT为0x22,保存敲击事件到寄存器WINDOW值开始的等待时间;设置寄存器WINDOW为0xFF,保存发生第二次有效敲击的最大延迟时间,一开始我们设置这个寄存器的值太小,在检测到第二次有效敲击之前中断就判断为单机动作,所以总是检测不到双击动作,调试过程中把这个值调到了最大,大约是0.38s,比较符合人双击动作延迟时间。设置这三个寄存器,可保证检测到两次有效敲击并屏蔽第一次敲击后发生的无效敲击。

设置寄存器TAP_AXES为0x04,使能x轴进行敲击检测。设置寄存器INT_ENABLE为0x60,使能单击检测和双击检测中断,最后读取寄存器INT_SOURCE将数据清零,关闭中断。

图中左下角的小芯片就是ADXL345,敲击的检测结果显示在液晶屏上