电容触摸按键效果不好!!

2019-07-20 04:25发布

u8 TPAD_Scan(u8 mode)
{
static u8 keyen=1; //0,可以开始检测;>0,还不能开始检测  
u8 sample=3; //默认采样次数为3次  
u16 rval;
if(mode)
{
sample=6; //支持连按的时候,设置采样次数为6次
keyen=1; //支持连按  
}
rval=TPAD_Get_MaxVal(sample); 
if(keyen&&(rval>(tpad_default_val+TPAD_GATE_VAL)&&rval<(10*tpad_default_val)))//大于tpad_default_val+TPAD_GATE_VAL,且小于10倍tpad_default_val,则有效
{  
keyen=0; 

return 1;
}
else if(!((rval>(tpad_default_val+TPAD_GATE_VAL)&&rval<(10*tpad_default_val)))&&((rval>tpad_default_val-100)&&(rval<tpad_default_val+100)))keyen=1;

return 0;
}


在看电容触摸按键这一个实验的时候感觉按键效果不是很好,按住的时候会一直闪
于是自己参照按键那一实验进行修改为上面代码,亲测感觉比原来的效果要好,特来分享,如有哪里写得不好之处,请大家指出
还有就是感觉老师写的不是很好理解,看了我好久,不知道老师为何要这么写?

第一次发帖  新来的  还请多多关照!!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
龙之谷
1楼-- · 2019-07-20 07:40
 精彩回答 2  元偷偷看……
正点原子
2楼-- · 2019-07-20 07:48
谢谢分享.
代码不应该存在按住不放就闪烁的现象.
你用的哪款开发板?

现在战舰V3的代码是这样的:
[mw_shl_code=c,true]//扫描触摸按键 //mode:0,不支持连续触发(按下一次必须松开才能按下一次);1,支持连续触发(可以一直按下) //返回值:0,没有按下;1,有按下; #define TPAD_GATE_VAL 100 //触摸的门限值,也就是必须大于tpad_default_val+TPAD_GATE_VAL,才认为是有效触摸. u8 TPAD_Scan(u8 mode) { static u8 keyen=0; //0,可以开始检测;>0,还不能开始检测 u8 res=0; u8 sample=3; //默认采样次数为3次 u16 rval; if(mode) { sample=6; //支持连按的时候,设置采样次数为6次 keyen=0; //支持连按 } rval=TPAD_Get_MaxVal(sample); if(rval>(tpad_default_val+TPAD_GATE_VAL))//大于tpad_default_val+TPAD_GATE_VAL,有效 { if(keyen==0)res=1; //keyen==0,有效 //printf("r:%d ",rval); keyen=3; //至少要再过3次之后才能按键有效 } if(keyen)keyen--; return res; } [/mw_shl_code]
Kevem
3楼-- · 2019-07-20 10:59
回复【3楼】正点原子:
---------------------------------
我开发板是探索者F4
那个是我自己改的   原来的代码就是你那样的 
我就是发现原来的那个按住不放就闪烁的现象   
所以自己改了后发现改后的那个会好一点

还有就是寄存器版本的   tpad例程   TIM2->SR&0X04==0
检测的0x04是不是错了  不是应该0x02吗?
Kevem
4楼-- · 2019-07-20 11:21
 精彩回答 2  元偷偷看……
正点原子
5楼-- · 2019-07-20 14:34
 精彩回答 2  元偷偷看……
snailmoving
6楼-- · 2019-07-20 15:01
正点原子 发表于 2015-9-24 19:50
回复【4楼】Kevem:
---------------------------------
反复闪烁的问题,没有测出。
不过&0X04确实是有问题 ...

也发现了同样的问题,这个&0X04应该是0x02。
原来有前辈已经发现了。哈哈

一周热门 更多>