涂鸦arduino中文社区活动
查看: 474|回复: 1

arduino实现一个按键检测库

[复制链接]

该用户从未签到

发表于 2021-1-22 19:58 | 显示全部楼层 |阅读模式
本帖最后由 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();
}




可以设置类的这几个属性, 以达到最佳的按键效果。
QQ截图20210122195408.png


CxgBtn.zip (2.81 KB, 下载次数: 8)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

热门推荐

字符串是否对比该使用哪个函数?
字符串是否对比该使用哪个
现有问题是, 串口接收到的数据是正常的,(通过print函数打印串口收
VSCode+PIO开发环境中添加Blinker.h的问题
VSCode+PIO开发环境中添加
我在main.c中添加就没问题,但是添加在.h文件中就会出现编译错误,在其他.c文件添加此
【干货分享】mega2560原理图PCB图纸altium designer18
【干货分享】mega2560原理
分享一下mega2560的板子 AD版本 **** 本内容被作者隐藏 **** ergo
这样写不对吗,为啥老是报错
这样写不对吗,为啥老是报
Python上位机控制WS2812B
Python上位机控制WS2812B
说在前面: 设计师对颜色有着天生的敏锐性,而工程师眼中这些都会幻化成数值。。
Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
快速回复 返回顶部 返回列表