关联单击事件 | 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);
}