按键的短按、长按和连续的划分

        在实际生活中,我们使用到的按键在短按、长按和按键松开时都会触发不同的功能。按键短按后松开和长按后松开的应用比短按和长按的应用较少,我了解的按键短按后松开和长按后松开的应用是在点动控制和长动控制中。这里主要讨论按键的短按、长按和连续这三种状态的判断。

  

        假设0ms~750ms为短按的判定时间范围,750ms~900ms为持续的判定时间范围。

        那么当按键按下后,在0ms~750ms内松开,就实现短按对应的操作。

        按键按下后,不松开,那么在750ms的时候就要触发一次长按对应的操作。如果还不松开,每隔150ms便检测一次当前按键的状态,如果仍未松开,就触发一次按键持续(长按持续)对应的操作(例如让显示的数字一直加一或一直减一),直到松开(这时候就可以添加一个按键长按后松开的对应操作,不过这个操作是可选的)。        

        注意:长按对应的操作在每次按键按下时只能触发一次,后续则是持续对应的操作了。

        这里的时间范围是可以自定义的,没有严格要求,在实际中应该结合项目的要求来实现。

     

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Arduino可以通过检测按键的状态来区分按和短按。一般情况下,我们可以使用digitalRead函数来读取按键的状态,当按键按下时,digitalRead函数会返回HIGH,当按键松开时,digitalRead函数会返回LOW。根据这个原理,我们可以编写程序来检测按键的状态,从而实现按和短按的功能。 以下是一个简单的Arduino代码示例,用于检测按键的状态: ``` const int buttonPin = 2; // 按键连接的引脚 int buttonState = 0; // 按键状态 unsigned long startTime; // 记录按键按下的时间 void setup() { pinMode(buttonPin, INPUT); Serial.begin(9600); } void loop() { // 读取按键状态 buttonState = digitalRead(buttonPin); // 当按键按下时,记录按下的时间 if (buttonState == HIGH) { startTime = millis(); } // 当按键松开时,判断按键按下的时间 if (buttonState == LOW) { unsigned long duration = millis() - startTime; // 如果按键按下的时间小于500毫秒,认为是短按 if (duration < 500) { Serial.println("Short press"); } // 如果按键按下的时间大于500毫秒,认为是按 if (duration > 500) { Serial.println("Long press"); } } } ``` 上述代码中,我们首先定义了一个按键连接的引脚和一个记录按键状态的变量。在setup函数中,我们将该引脚设置为输入模式,并初始化串口通信。在loop函数中,我们首先读取按键的状态,如果按键处于按下状态,我们就记录按下的时间。当按键松开时,我们计算按键按下的时间,并根据时间度判断是短按还是按。如果按键按下的时间小于500毫秒,我们就认为是短按;如果按键按下的时间大于500毫秒,我们就认为是按。最后,我们使用Serial.println函数将结果输出到串口上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值