[技术讨论] 问个问题。我这有个震动开关,太灵敏了,怎么修改?

[复制链接]
1023|1
 楼主| 1564564 发表于 2023-6-15 17:12 | 显示全部楼层 |阅读模式
void level_change_isr(void)
{
    INTCONbits.IOCIF = 0 ;
    IOCBFbits.IOCBF4  = 0 ;
    //IOCBPbits.IOCBP4 = 0 ;   
    prevent_repeat_interrupt = 0 ;
    count++;
    timer1_flag = 0 ;
}震动之后,产生中断,这里计数count++;

if(count > 10)//12
        {
            QUIVER_Configuration();
              timer1_flag = 0 ;
              wake_flag = 1 ;
              count=0;
              shiver_flag_2=1;
              //QUIVER_Configuration();
              IOCBPbits.IOCBP4=0;
            
        }//这是假如震动10次就执行这部分


        if(IO_RB4_GetValue()==1)
        {
            timer1_flag=0;
        }//这部分是假如检测到震动,即引脚电平变为1,就清除这个标志位
        if(count > 1)
        {
            //for(uint8_t timers=0;timers <20;timers++ )
            {
                timer1_flag = 0 ;
                if(count <= 10)
                {
                    timer1_flag = 0 ;
                    count = 0;
                }
            }
        }   //这部分是防止误操作,2-10,就清0,重新计数;

现在有个问题就是我按下按下按键或者震动,小灯偶尔会出现闪烁的现象,还有就是这么写可以改良灵敏度吧。
chunyang 发表于 2023-6-16 17:32 | 显示全部楼层
如果是机械触点型震动开关,做个延时判断即可,类似于键盘消抖算法。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

114

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部