当前位置: 首页 > news >正文

Arduino 开源按键库大合集(单击/双击/长按实现)

2025.5.10 22:25更新:增加了Button2
2025.5.10 13:13更新:增加了superButton

虽然Arduino自带按键中断attachInterrupt(button1.PIN, isr, FALLING);,但是要是要实现去抖,双击检测,长按检测等等就略微麻烦些,轮子很多我们不必重新造了。
这个帖子来由是因为OneButton这个库在我的一个程序MQTT客户端里面,联网就好使,没联网就不能用。调试半天折腾不出来,索性试试其他的,顺便就收集了若干个Arduino按键库。

1. AceButton

bxparks/AceButton: An adjustable, compact, event-driven button library for Arduino that debounces and dispatches events to a user-defined event handler. -
一个可调节的、紧凑的、事件驱动的Arduino按钮库,能够消抖并将事件分发到用户定义的事件处理程序。

2. ClickButton

marcobrianza/ClickButton: A simple button Arduino library to get short and long clicks, multiple clicks (double click, triple click etc.). Click-and-hold is also possible. -
一个简单的单按钮Arduino库,用于获取短按和长按,多次点击(双击、三击等)。按住不放也可以检测。

3. OneFuncButton

andrijaantunovic/OneFuncButton: A simple Arduino button library modelled as a state machine -
这个库适用于需要通过按钮快速且简单地进行控制的简单项目。它不使用任何回调函数或中断。

4. ButtonEvents

fasteddy516/ButtonEvents: An Arduino library for catching tap, double-tap and press-and-hold events for buttons -
ButtonEvents 是一个适用于 Arduino 的库,它提供了检测与连接到配置为数字输入引脚的按钮相关联的轻击、双击和长按事件的方法。
它依赖另外一个库:
https://github.com/thomasfredericks/Bounce2

5. OneButton

mathertel/OneButton: An Arduino library for using a single button for multiple purpose input. -
这个Arduino库改善了单个按钮用于输入的使用方式。它展示了如何使用一个连接了单个按钮的数字输入引脚来检测一些典型的按钮按下事件,例如单击、双击和长时间按压。这使您能够将同一个按钮用于多种功能 。

6. SuperButton

slavaza/SuperButton: Mulifunctional Arduino button. Detects single, double and long pressing with debounce suppression. Very easy using. -
检测按钮的单击、双击和长按,同时抑制触点的抖动。无需额外的微控制器资源,使用系统定时器,非常易于使用。

7. Button2

LennartHennigs/Button2: Arduino/ESP button library that provides callback functions to track single, double, triple and long clicks. It also takes care of debouncing. -
Gitcode地址: Button2: - GitCode -
Button2 是一个专为Arduino和ESP系列设备设计的开源库,旨在简化按钮操作的处理。由Lennart Hennigs开发,该库支持多种按钮事件,包括单击、双击、三击和长按,并提供了回调函数和主循环两种使用方式。Button2不仅处理了按钮的防抖动问题,还能显著减少和简化你的代码。

项目特点

  • 简化代码:Button2通过提供回调函数和预设的事件处理机制,大大减少了开发者的编码工作量。
  • 支持多种设备:经过测试,Button2兼容Arduino、ESP8266和ESP32等多种设备。
  • 灵活的事件处理:支持单击、双击、三击和长按等多种按钮事件,且可以自定义事件处理函数。
  • 防抖动处理:内置的防抖动机制确保了按钮输入的准确性。
  • 扩展性强:支持自定义按钮状态处理函数,可以轻松集成不同类型的按钮。

----------------分割线--------------------

oneButton刚才说了在我的程序里面有些问题。

于是我先试用了AceButton,默认AceButton的双击事件也会产生单击事件,区别单击双击的用法也有,但是有些副作用,具体请看它的examples说明,在此不赘述。

最后我用了ButtonEvents,注意要装上它的依赖库即可。

http://www.xdnf.cn/news/383005.html

相关文章:

  • VB与Excel无缝连接实现指南
  • 编译后的js文件如何跟进调试
  • OpenAI的商业化之路:从非营利到盈利的转型
  • IC ATE集成电路测试学习——开尔文连接
  • 最速下降法和梯度下降法的异同
  • python基础(十一)-逻辑运算符
  • nextjs 部署失败:cause: Error: unable to verify the first certificate
  • C语言加餐--一些关键字
  • 数字信号处理|| 离散系统的冲激响应和阶跃响应
  • 【Python训练营打卡】day21 @浙大疏锦行
  • 101alpha第九
  • 一、ArkTS语法学习
  • Qt 界面优化(QSS)
  • 【数据结构与算法】——图(二)
  • 《AI大模型应知应会100篇》第54篇:国产大模型API对比与使用指南
  • 【Redis】基础命令数据结构
  • Spring框架核心知识全解析:从基础到实战
  • [面试]SoC验证工程师面试常见问题(六)高速接口篇
  • 含锡电镀废水深度净化技术体系解析化利用的全流程优化
  • pytest自动化测试执行环境切换的两种解决方案
  • 树莓派OS系统详解
  • 动态规划法:爬楼梯
  • C++模板梳理
  • JAVA练习题(3) 开发验证码
  • 如何避免软件腐朽
  • jflash下载时出现 Could not read unit serial number! 的解决方法
  • 数据结构—(概述)
  • 【typenum】 1 说明文件(README.md)
  • 【AI论文】迈向多模态通才之路:通用层级与通用基准
  • 一文讲透MCP的原理及实践