数码之家

 找回密码
 立即注册
搜索
查看: 1568|回复: 18

[Arduino] 做一个带硬件消痘的按键模块,似乎效果还行

[复制链接]
发表于 2020-3-11 09:24:35 | 显示全部楼层 |阅读模式
网上看见一段程序,里面有段按键检测代码,
我从来不用按键,这次也来试试



结果是有时不触发,有时按一下,结果却是显示好几下
于是乎,换了锅子片,还加了消痘电容,这下似乎没什么毛病了
实验结果基本让人满意



按一下,就显示一下,不多不少,哈哈:titter:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

打赏

参与人数 1家元 +20 收起 理由
有点不烧 + 20 謝謝分享

查看全部打赏

发表于 2020-3-11 10:16:32 | 显示全部楼层
楼主会玩啊

打赏

参与人数 1家元 +5 收起 理由
人艰不拆了 + 5

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2020-3-11 17:31:03 | 显示全部楼层
加了电容后,软件去抖也是不可少的:smile:

打赏

参与人数 1家元 +5 收起 理由
人艰不拆了 + 5

查看全部打赏

回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-11 18:18:41 | 显示全部楼层
sz1988 发表于 2020-3-11 17:31
加了电容后,软件去抖也是不可少的

怎么说呢?:dizzy:
回复 支持 反对

使用道具 举报

发表于 2020-3-11 19:11:27 | 显示全部楼层

有时候不能完全吸收掉抖动吧!
回复 支持 反对

使用道具 举报

发表于 2020-3-11 19:13:32 | 显示全部楼层
美容论坛???
消痘?
我进错地方了,打扰了。

打赏

参与人数 1家元 +5 收起 理由
人艰不拆了 + 5

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2020-3-11 19:33:15 | 显示全部楼层
本帖最后由 慕名而来 于 2020-3-11 19:34 编辑

最近玩闹表程序,关于硬件消抖动的方法在网上就是加电容和加芯片那么几个图片,而且应用效果、现象众说纷纭没有可参照性,但按键并联0.1uf电容的方法是我在玩数字电路时就用的,此处玩闹钟总是感觉按键那个延时不顺,就采用了并联电容的方法,调试程序快一个月了按键正常的还没发现按键错乱的问题。
  1. //按键硬件加电容去抖动
  2. void Alarm_time()
  3. {
  4.     if(NG==0)
  5.     {
  6.         g=~g;
  7.         if(!g)
  8.         {
  9.             TR1=0;
  10.         }
  11.         while(!NG);
  12.     }
  13. }
复制代码


打赏

参与人数 1家元 +10 收起 理由
人艰不拆了 + 10

查看全部打赏

回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-11 20:00:18 | 显示全部楼层
慕名而来 发表于 2020-3-11 19:33
最近玩闹表程序,关于硬件消抖动的方法在网上就是加电容和加芯片那么几个图片,而且应用效果、现象众说纷纭 ...

哈哈,那么说看来还不错嘛:loveliness:
回复 支持 反对

使用道具 举报

发表于 2020-3-11 20:04:45 | 显示全部楼层
人艰不拆了 发表于 2020-3-11 20:00
哈哈,那么说看来还不错嘛

咱们菜鸟,不敢说经验只是自己觉得能用就好。
回复 支持 反对

使用道具 举报

发表于 2020-3-11 22:18:16 | 显示全部楼层
电容去抖浪费手头的小电容,还不稳定。不如加两行代码,免费又简洁

打赏

参与人数 1家元 +5 收起 理由
人艰不拆了 + 5

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2020-3-12 00:15:11 | 显示全部楼层
看一下如何消痘的,原来是消抖,唉。
话说,如果系统对实时性要求比较高的情况下,最好不要用简单的DELAY做消抖,最好是用按键标志加时间标志做消抖,效果好,系统反应快。
回复 支持 反对

使用道具 举报

发表于 2020-3-12 00:16:44 | 显示全部楼层
慕名而来 发表于 2020-3-11 19:33
最近玩闹表程序,关于硬件消抖动的方法在网上就是加电容和加芯片那么几个图片,而且应用效果、现象众说纷纭 ...

并联的电容后,理论上,对按键的使用寿命会有一定的影响,最好是用按键标志加时间标志。

打赏

参与人数 1家元 +5 收起 理由
人艰不拆了 + 5

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2020-3-12 10:49:27 | 显示全部楼层
如果是批量产品不建议用加电容方式按键消抖,建议用软件消抖更好更稳定。

打赏

参与人数 4家元 +70 收起 理由
aec + 20 謝謝分享
超级女生 + 20 歡迎探討
moontree + 20 歡迎探討
人艰不拆了 + 10

查看全部打赏

回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-12 11:00:31 | 显示全部楼层
zx61107 发表于 2020-3-12 10:49
如果是批量产品不建议用加电容方式按键消抖,建议用软件消抖更好更稳定。 ...

哈哈,这个省事嘛:titter:
回复 支持 反对

使用道具 举报

发表于 2020-3-12 11:30:09 | 显示全部楼层
深山老妖 发表于 2020-3-12 00:16
并联的电容后,理论上,对按键的使用寿命会有一定的影响,最好是用按键标志加时间标志。 ...

一直以来只会用延时20ms的按键程序,加标志的C51按键程序希望大神能给个例程学习一下(用我贴的代码改一下就好、我容易理解),先谢了!
回复 支持 反对

使用道具 举报

发表于 2020-3-12 19:36:53 来自手机浏览器 | 显示全部楼层
觉得硬件消抖更好用,不用考虑延时啊标志啊,几乎没遇过失误
回复 支持 反对

使用道具 举报

发表于 2020-3-12 21:48:22 | 显示全部楼层
本帖最后由 深山老妖 于 2020-3-13 00:42 编辑
慕名而来 发表于 2020-3-12 11:30
一直以来只会用延时20ms的按键程序,加标志的C51按键程序希望大神能给个例程学习一下(用我贴的代码改一 ...

sbit KEY_UPP = P1^0;
bit KEY_UPP_B = 0;//上移变量
unsigned char KEY_UPP_Tim=0;
unsigned int KEY_UPP_DAT=0;
if(KEY_UPP==1&&KEY_UPP_B==1)//恢复上移键
{
        KEY_UPP_B=0;
        KEY_UPP_EN=0;
        KEY_UPP_Tim=0;        
}
if(KEY_UPP==0&&KEY_UPP_B==0)//按下上移键
{
        KEY_UPP_B=1;        
}
if(KEY_UPP_EN==1&&KEY_UPP_DAT<65535)//调整上移变量
{
        KEY_UPP_EN=0;
        KEY_UPP_DAT++;
}

void Timer0_Int() interrupt 1  //定时器0中断服务函数
{
        if(KEY_UPP==0&&KEY_UPP_B==1&&KEY_UPP_Tim<200)
        {
                KEY_UPP_Tim++;
                if(KEY_UPP_Tim==10)
                {
                        KEY_UPP_EN=1;
                }
                if(KEY_UPP_Tim>=200)//快速上移
                {
                        KEY_UPP_EN=1;
                        KEY_UPP_Tim=195;
                }
        }
}
回复 支持 反对

使用道具 举报

发表于 2020-3-13 16:12:06 | 显示全部楼层
深山老妖 发表于 2020-3-12 21:48
sbit KEY_UPP = P1^0;
bit KEY_UPP_B = 0;//上移变量
unsigned char KEY_UPP_Tim=0;

多谢坛友分享例程,粗略看了使用定时器做延时的,只是不太理解TL0、TH0的赋值方式以及T0的初始化模式,我再努力看看希望能弄懂这段代码。
回复 支持 反对

使用道具 举报

发表于 2020-3-14 15:45:36 | 显示全部楼层
软件消抖要做好也不容易
用delay就好了吗?那就太天真了。
遇到一些比较特殊的应用,dalay是不能用的。

反正还是要根据具体情况来采用不同的消抖方案。
硬件消抖好像并联一个104有时候也是不太管用的。貌似标准的消抖电路没有那么简单。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-5-8 19:04 , Processed in 0.436800 second(s), 12 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

快速回复 返回顶部 返回列表