永发信息网

怎样根据按键时间长短来实现不同功能,Arduino

答案:1  悬赏:50  手机版
解决时间 2021-11-28 12:59
怎样根据按键时间长短来实现不同功能,Arduino
最佳答案
#include 

#define KEY    12

uint16_t key_cnt;
boolean key_flag;

#define TIME_20MS      2
#define TIME_200MS    20
#define TIME_1S      100
#define TIME_3S      300
#define TIME_5S      500
#define TIME_10S    1000 
#define TIME_20S    2000

void TimerCBK(void) 
{
    key_cnt++;
}

void setup(void)
{
  pinMode(KEY, INPUT);
  key_cnt = 0;
  key_flag = false;
  MsTimer2::set(10, TimerCBK); // 10ms调用一次TimerCBK函数
  MsTimer2::start();
}

void loop(void) 
{
    if (digitalRead(KEY) == LOW) //按键按下
    {
        key_flag = true;
    }
    else if (key_flag == true) //按键被放开,但按键事件还未被处理
    {
        if (key_cnt < TIME_20MS)
        {
            //按键按下时间太短,不做处理
        }
        else if (key_cnt <= TIME_200MS)
        {
            //短按
            //do something here.
        }
        else if (key_cnt <= TIME_1S)
        {
            //长按1
            //do something here.
        }
        else if (key_cnt <= TIME_3S)
        {
            //长按2
            //do something here.
        }
        else if (key_cnt >= TIME_20S)
        {
            //按键坏了?
            //error
        }
        key_flag = false;
    }
    else //按键被放开,且按键触发的事件也已经被处理
    {
        key_cnt = 0; //计时清零。
    }
}

//代码给你了,求采纳。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我是苹果手机,想在app里用微信充值,但一转
陈小春到底实际身高是多少,,不要告诉我178
长沙按摩有些什么地方比较好点的?
依次填入文中横线处,恰当的一组句子是
PPR热熔机(32型)电路接线图
玻璃幕墙宽1.4米高4.4米要用什么型号玻璃
“唯唯连声”的“唯唯”两字念第几声?
3dmax木地板踢脚线怎么做
South Africa是什么意思
关于精准作文700字
临晋中学最近几年高考成绩,为什么不放榜
国家规定3米以上砌墙加多少钱
贵港是什么样的城市?
潇字开头的成语有什么
如何理解“你为了舒适的床而放弃了朋友” 为
推荐资讯
我有一普通朋友从来不发朋友圈,我朋友圈他也
打印:页码范围无效。请输入介于1和2之间的数
中国黄金(大润发店)怎么样,好不好的默认点
单选题下列句子中,标点符号使用正确的一项是
创维55V8E怎么样?创维55V8E好吗
4月1日起微信支付宝 收款有限额吗
0.76g等于多少英寸/秒/秒
人为什么会产生静电
华硕笔记本v556u装vin7
珠海社保2010年后交20年吗?
顶楼房顶没水,屋里房顶一直滴水什么原因
2017word导航窗口没有怎么办
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?