本帖最后由 cxg 于 2021-1-29 20:18 编辑
参照OneButton库, 我实现了一个自己的按键检测库, 实现了按键的按下,抬起,长按,双击功能, 代码简洁明了。目前只在esp32上测试过,在stm32, arduino uno上应该也没问题.
demo代码:
#include <Arduino.h>
#include "cxg_Btn.h"
static int btn1_pin = 39;
static CxgBtn btn1(btn1_pin, false);
void setup() {
Serial.begin(115200);
//按钮按下回调
btn1.setBtnKeydown([]() {
Serial.println("keyDown");
});
//按钮抬起回调
btn1.setBtnKeyUp([]() {
Serial.println("keyUp");
});
//按钮长按回调
btn1.setBtnLongPress([]() {
Serial.println("longPress");
});
//双击回调
btn1.setBtnDoubleClickCallback([]() {
Serial.println("doubleClick");
});
}
void loop() {
//循环检查状态
btn1.check();
}
可以设置类的这几个属性, 以达到最佳的按键效果。
CxgBtn.zip
(2.81 KB, 下载次数: 30)
新版将构造方法初始化改为调用attach方法初始化
CxgBtn.zip
(2.89 KB, 下载次数: 15)
|