arduino之 OneButton 库

关联单击事件 button.attachClick(callback)
关联双击事件             button.attachDoubleClick(callback)
设置长按最短时长      button.setPressTicks(time_ms)
关联长按开始事件      button.attachLongPressStart(callback)
关联长按结束事件      button.attachLongPressStop(callback)
关联长按期间事件      button.attachDuringLongPress(callback)
关联按下事件,不管单击双击长按,持续触发  button.attachPressStart(callback)
获取按键时长              button.getPressedTicks()
设置单击时长,单位毫秒  button.setClickTicks(time_ms)
按键扫描                   button.tick()

示例:

#include <Arduino.h>
#include "OneButton.h"
 
#define PIN_INPUT 0
 
OneButton button(PIN_INPUT, true);
// 第一个参数,按钮连接的引脚
// 第二个参数,true  低电平有效,false 高电平有效
// 第三个参数,是否开启内部INPUT_PULLUP   true :pullup enable
 
void click(){}
void doubleclick(){}
void multiClick(){
  int n = button.getNumberClicks();
  switch (n)
  {
  case 3:
    Serial.println("Triple Click");
    break;
  case 4:
    Serial.println("Quadruple Click");
    break;
  }
}
void longPressStart(){}
void duringLongPress()
{
  if (button.isLongPressed())     // 是否正在被长按
  {
    Serial.print("duringLongPress:");
    Serial.println(button.getPressedTicks());
    delay(50);
  }
}
void longPressStop(){}
void attachPressStart(){}

void setup()
{
  Serial.begin(115200);
  button.reset();//清除一下按钮状态机的状态
  button.setDebounceTicks(50);  // 设置按键消抖时长
  button.setClickTicks(500);        // 设置点击时长
  button.attachClick(click);
  button.attachDoubleClick(doubleclick);
  button.attachMultiClick(multiClick);  // 多连击

  button.setPressTicks(800);      // 长按时间判定,800ms后算长按
  button.attachLongPressStart(longPressStart);
  button.attachDuringLongPress(duringLongPress);
  button.attachLongPressStop(longPressStop);

  button.attachPressStart(attachPressStart);//按下键就会持续触发
}
void loop()
{
  button.tick();
  delay(10);
}

参考:ESP32 Arduino(十一) 按键控制库 OneButton

          Arduino按钮使用

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值