arduino OneButton按键扫描长按
时间: 2023-11-04 08:51:02 浏览: 212
使用OneButton库,可以轻松地实现单击和长按两种按键操作。
首先,你需要在你的 Arduino IDE 中安装 OneButton 库。安装方法可参考这里:https://github.com/mathertel/OneButton
然后,在你的代码中,你需要定义一个 OneButton 对象,并设置单击和长按的时间阈值:
```c++
#include <OneButton.h>
OneButton button(2, true); // 定义一个 OneButton 对象,连接到 2 号引脚,且为高电平触发
void setup() {
Serial.begin(9600);
button.attachClick(clickHandler); // 单击事件处理函数
button.attachLongPressStart(longPressStartHandler); // 长按开始事件处理函数
button.attachLongPressStop(longPressStopHandler); // 长按结束事件处理函数
button.setClickTicks(50); // 单击时间阈值,单位为毫秒
button.setPressTicks(1000); // 长按时间阈值,单位为毫秒
}
void loop() {
button.tick(); // OneButton库必须在主循环中不断调用 tick() 函数
}
void clickHandler() {
Serial.println("Button clicked!");
}
void longPressStartHandler() {
Serial.println("Long press started!");
}
void longPressStopHandler() {
Serial.println("Long press stopped!");
}
```
在上面的代码中,我们定义了一个 OneButton 对象,并将其连接到 2 号引脚(这个可以根据实际情况修改)。我们还设置了单击和长按的时间阈值,分别为 50ms 和 1000ms。在 setup() 函数中,我们将单击、长按开始和长按结束事件处理函数分别绑定到了 clickHandler()、longPressStartHandler() 和 longPressStopHandler() 函数。在主循环中,我们不断调用 OneButton 库的 tick() 函数。
当按键被单击时,clickHandler() 函数会被调用,输出 "Button clicked!"。当按键被长按时,longPressStartHandler() 函数会被调用,输出 "Long press started!",而当长按结束时,longPressStopHandler() 函数会被调用,输出 "Long press stopped!"。
需要注意的是,OneButton 库默认是低电平触发,如果需要高电平触发,可以在定义 OneButton 对象时,将第二个参数传入 true。
阅读全文