Bounce2:Arduino和Wiring的防抖动库
Bounce2Debouncing library for Arduino and Wiring项目地址:https://gitcode.com/gh_mirrors/bo/Bounce2
项目介绍
Bounce2 是一个专为Arduino和Wiring设计的防抖动库,由Thomas Ouellet Fredericks开发,并得到了众多贡献者的支持。机械按钮和开关在闭合或打开时会产生轻微振动,导致多次不必要的虚假状态(类似于噪声)。Bounce2库通过过滤这些不必要的状态变化来解决这一问题。
项目技术分析
Bounce2库由三个主要类组成:
Bounce2::Button
:这是大多数用户会使用的类,提供了最丰富的功能来处理硬件按钮的防抖动。Debouncer
:这是实际进行防抖动的代码,只有高级用户才应使用此类来创建自己的实现。Bounce
:这个类将Debouncer
类链接到硬件板上的一个引脚。由于需要与以前版本的库保持向后兼容性,因此其命名有些奇怪。
项目及技术应用场景
Bounce2库适用于任何需要处理按钮或开关抖动的场景,特别是在Arduino和Wiring项目中。无论是简单的LED控制,还是复杂的交互式设备,Bounce2都能确保按钮输入的稳定性和可靠性。
项目特点
- 易于使用:提供了简单的API,用户只需几行代码即可实现按钮的防抖动。
- 灵活性:支持内部和外部上拉电阻,适应不同的硬件配置。
- 高效性:通过稳定的间隔或锁定间隔算法,有效消除抖动。
- 丰富的功能:提供了
pressed()
和released()
等方法,方便用户处理按钮事件。
安装与使用
安装
通过Arduino IDE的库管理器安装,或从GitHub下载最新版本,并将“Bounce2”文件夹放入“libraries”文件夹中。
基本使用
#include <Bounce2.h>
Bounce2::Button button = Bounce2::Button(); // 实例化一个Bounce2::Button对象
void setup() {
button.attach(PIN, PIN_MODE); // 将按钮连接到指定引脚
button.interval(INTERVAL_IN_MS); // 设置防抖动间隔
button.setPressedState(PRESSED_STATE); // 设置按钮按下时的状态
}
void loop() {
button.update(); // 更新按钮状态
if (button.pressed()) {
// 按钮被按下时的处理逻辑
}
}
示例
按钮控制LED
#include <Bounce2.h>
Bounce2::Button button = Bounce2::Button();
#define BUTTON_PIN 39
#define LED_PIN 13
bool ledState = LOW;
void setup() {
button.attach(BUTTON_PIN, INPUT); // 使用外部上拉
button.interval(5); // 防抖动间隔
button.setPressedState(LOW); // 按钮按下时输出LOW
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, ledState);
}
void loop() {
button.update();
if (button.pressed()) {
ledState = !ledState; // 切换LED状态
digitalWrite(LED_PIN, ledState);
}
}
文档
Bounce2::Button
提供了丰富的API,包括pressed()
和released()
等方法,方便用户处理按钮事件。
Bounce
将Debouncer
类链接到硬件引脚,提供了基本的防抖动功能。
Debouncer
仅包含防抖动代码,不涉及硬件,适用于高级用户自定义实现。
结论
Bounce2库是一个强大且易于使用的防抖动解决方案,适用于各种Arduino和Wiring项目。无论是初学者还是高级用户,都能从中受益。立即尝试Bounce2,提升你的项目稳定性!
Bounce2Debouncing library for Arduino and Wiring项目地址:https://gitcode.com/gh_mirrors/bo/Bounce2