Arduino 用OneButton.h库写按键长按短按
时间: 2024-05-10 13:17:57 浏览: 10
使用 OneButton.h 库可以很方便地实现按键的长按和短按功能。下面是一个简单的示例代码,演示了如何使用该库来检测按键的状态:
```C++
#include <OneButton.h>
// 定义按键引脚
#define BUTTON_PIN 2
// 创建一个 OneButton 对象
OneButton button(BUTTON_PIN, true);
void setup() {
// 初始化串口
Serial.begin(9600);
// 设置按键长按和短按的时间阈值(单位为毫秒)
button.setClickTicks(100);
button.setPressTicks(1000);
// 绑定按键短按和长按的回调函数
button.attachClick(clickHandler);
button.attachLongPressStart(longPressStartHandler);
button.attachLongPressStop(longPressStopHandler);
}
void loop() {
// 处理按键事件
button.tick();
}
// 按键短按的回调函数
void clickHandler() {
Serial.println("Short press detected.");
}
// 按键长按开始的回调函数
void longPressStartHandler() {
Serial.println("Long press started.");
}
// 按键长按结束的回调函数
void longPressStopHandler() {
Serial.println("Long press stopped.");
}
```
在上面的代码中,我们首先定义了按键的引脚。然后创建了一个 OneButton 的对象,并设置了按键长按和短按的时间阈值。接着,我们绑定了按键短按和长按的回调函数,这些函数将在相应的事件发生时被调用。最后,在主循环中调用 `button.tick()` 处理按键事件即可。
需要注意的是,`OneButton.h` 库使用了 `attachInterrupt()` 函数来检测按键状态,因此在使用该库时需要根据实际情况选择正确的引脚。同时,由于 Arduino 的 `loop()` 函数是一个无限循环,因此需要使用 `button.tick()` 来驱动按键事件的处理。