发布时间:2026/8/23 17:18:15
Bounce2 API完整参考:Debouncer、Bounce与Button三类全方法速查清单 Bounce2 API完整参考Debouncer、Bounce与Button三类全方法速查清单【免费下载链接】Bounce2Debouncing library for Arduino and Wiring项目地址: https://gitcode.com/gh_mirrors/bo/Bounce2Bounce2 是 Arduino 平台上最常用的开源按键防抖库用于滤除机械按键抖动带来的误触发。本文是 Bounce2 API 完整参考速查清单逐条覆盖 Debouncer、Bounce、Button 三类方法适合新手上手 Bounce2。一、为什么需要按键防抖先看 Bounce2 的三层类结构机械按键在闭合与断开的瞬间触点会轻微弹跳导致引脚电平在几毫秒内剧烈抖动——一次按下可能被digitalRead()误读成十次。Bounce2 用纯软件方式滤除这些抖动不依赖中断只要在loop()里高频调用update()再读状态即可。Bounce2 由三个逐层继承的类组成全部定义在src/Bounce2.h中类作用适合人群Debouncer纯粹的防抖算法与任何硬件引脚无关想自行封装防抖逻辑的高级用户Bounce把防抖算法绑定到板子上某个硬件引脚需要直接读取引脚电平HIGH/LOW的场景Bounce2::Button在Bounce基础上把电气电平映射为按下/松开物理动作绝大多数人的首选 ✅三者关系Button继承自BounceBounce继承自Debouncer。派生得越深抽象级别越高——日常开发只需使用Bounce2::Button。上图为典型的按键电路按钮一端接地另一端接数字引脚。按下按钮时引脚被拉低读数为LOW。二、通用防抖方法速查表8 个核心 API 一次看懂以下方法定义在基类Debouncer中Bounce与Button实例均可直接使用方法返回值作用使用提示update()bool刷新引脚状态返回状态是否变化每次loop()开头必须调用一次interval(ms)void设置防抖间隔毫秒默认 10 ms官方建议设为 5 msread()bool返回防抖后的电平HIGH/LOW读的是滤波后结果非原始引脚电平changed()bool上次update()后电平是否变化配合read()判断变化方向rose()bool是否出现低→高上升沿仅在变化后那次update()中为 truefell()bool是否出现高→低下降沿同上currentDuration()unsigned long当前电平已持续毫秒数状态一变即清零可做长按判断previousDuration()unsigned long上一个电平的持续毫秒数适合判断上一次按了多久 两条铁律update()是心跳读取任何状态前必须先调用一次Bounce2 不使用中断loop()跑得越快防抖结果越准。三、Bounce 类方法速查绑定硬件引脚的防抖器Bounce类声明于src/Bounce2.h第 184 行是算法与硬件引脚之间的桥梁方法作用Bounce()创建实例创建后再调用attach()Bounce(pin, interval_ms)构造时一步完成绑定引脚 设置防抖间隔attach(pin, mode)绑定引脚并设置模式INPUT/INPUT_PULLUP/OUTPUTattach(pin)只绑定引脚、不设置引脚模式需提前自行pinMode进阶用法getPin()返回当前绑定的引脚编号此外第二节表格中的 8 个通用方法全部可用。四、Bounce2::Button 类方法速查最推荐的按键写法Bounce2::Button类声明于src/Bounce2.h第 276 行是库中功能最丰富、官方推荐的物理按键用法方法作用Button()创建实例默认 HIGH 电平 按下setPressedState(state)指定哪个电平LOW/HIGH对应物理按下getPressedState()查询当前按下对应的电平isPressed()按钮现在是否处于按下状态电平判断pressed()按钮刚刚被按下只在变化那一圈为 truereleased()按钮刚刚被松开它同时继承Bounce与Debouncer的全部方法update()/interval()/currentDuration()等均可直接使用。⚠️ 新手最容易踩的坑默认按下状态是HIGH。若你的电路按下按钮时读到LOW见第一节接线图必须先调用setPressedState(LOW)否则pressed()永远为 false。五、易混淆方法辨析pressed() 与 isPressed() 差在哪pressed() waspressed只在按钮状态翻转后的那一次loop()中为 true适合每按一次切换一次isPressed() ispressed按钮被按住的整个过程中持续为 true适合按住不放时持续执行。同理rose()/fell()也只在电平变化后的一次update()中返回 true属于边沿事件而read()是电平值可连续读取。一句话记忆动词是瞬间pressed / released / rose / fellis 开头是状态isPressed。六、弃用方法提醒这些旧写法该换掉了库中保留了几处兼容旧版 Bounce 1 的弃用方法在src/Bounce2.h中均标记[[deprecated]]编译会产生警告弃用方法替代方案说明duration()currentDuration()改名以避免与previousDuration()混淆risingEdge()rose()Bounce 1 旧写法fallingEdge()fell()Bounce 1 旧写法新项目请直接使用新方法旧方法计划在下一大版本中移除。七、进阶配置三种防抖算法的宏开关Bounce2 的算法可通过预处理宏切换开关注释位于src/Bounce2.h第 39–43 行实现分支在src/Bounce2.cpp的update()中算法开启方式特点Stable默认无需设置电平稳定满间隔才确认简单可靠、能滤除噪声Lock-out定义BOUNCE_LOCK_OUT响应更快但状态确认后不再理会噪声Prompt Detection定义BOUNCE_WITH_PROMPT_DETECTION前态稳定时即时报告变化切换时机最精确// 在 Bounce2.h 顶部取消注释即可切换算法 #define BOUNCE_LOCK_OUT新手建议保持默认 Stable 算法一般场景足够可靠。八、快速上手最小可用的 Bounce2 写法官方README.md给出的标准流程是四步实例化 →setup()中配置 →loop()开头调用update()→ 读取pressed()#include Bounce2.h Bounce2::Button button; void setup() { button.attach(2, INPUT_PULLUP); // 绑定引脚 内部上拉 button.interval(5); // 防抖间隔 5ms button.setPressedState(LOW); // 按下时读到低电平 } void loop() { button.update(); // 每圈必须先刷新 if (button.pressed()) { // 刚被按下的这一圈里执行动作 } }九、文件索引源码与官方示例在哪里找API 声明src/Bounce2.hDebouncer/Bounce/Button三个类定义算法实现src/Bounce2.cppupdate()中三种算法分支基础示例examples/bounce_basic/bounce_basic.ino、examples/bounce_button/bounce_button.inocurrentDuration()示例examples/more/bounce_current_duration/bounce_current_duration.inopreviousDuration()示例examples/more/bounce_previous_duration/bounce_previous_duration.ino双按键示例examples/more/bounceTwo/bounceTwo.inoIDE 关键字文件keywords.txt项目元数据library.json、library.properties 查阅顺序建议先按第二节表格过一遍通用方法再根据自己用的是引脚电平还是物理按键对照第三、四节速查表取用方法即可。【免费下载链接】Bounce2Debouncing library for Arduino and Wiring项目地址: https://gitcode.com/gh_mirrors/bo/Bounce2创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

2026/8/23 17:18:15

数学建模竞赛后如何通过技术复盘将经验转化为个人能力

1. 从“交卷”到“复盘”:数模竞赛的真正价值远未结束 当提交论文的最后一刻,点击“发送”按钮,屏幕上显示“提交成功”时,那种如释重负的感觉,相信每一位参加过数学建模竞赛的同学都深有体会。熬了三天三夜&#xff0…

2026/8/23 17:18:15

LLaMA-Factory 自定义评估指标:一份能直接落地的实践笔记

LLaMA-Factory 自定义评估指标:一份能直接落地的实践笔记 【免费下载链接】LlamaFactory Unified Efficient Fine-Tuning of 100 LLMs & VLMs (ACL 2024) 项目地址: https://gitcode.com/GitHub_Trending/ll/LlamaFactory 你刚用 LLaMA-Factory 微调完模…

2026/8/23 18:53:23

深入解析SystemVerilog调度机制:芯片验证中的时序交通规则

1. 项目概述:为什么SV的调度机制是芯片验证的“交通规则”如果你刚接触SystemVerilog,尤其是从Verilog转过来做验证,可能会觉得仿真器有时候的行为有点“玄学”。明明代码逻辑看起来没问题,但仿真结果就是和预期对不上&#xff0c…

2026/8/23 18:53:23

SpringBoot+Vue实习生管理系统全栈开发实践

1. 项目概述:实习生管理系统的技术架构与价值 这个基于SpringBootVue的实习生管理系统,本质上是一个面向高校计算机专业毕业设计的全栈开发解决方案。我在指导过37个类似毕设项目后发现,实习生管理是学生最容易上手的选题方向之一——它既有明…

2026/8/23 18:53:23

Linux 系统 IO 知识点总结

一、文件 IO 基础1. 文件 IO 概念IO:I (Input 输入 / 读,从文件拿数据);O (Output 输出 / 写,把数据存入文件)。文件是存储介质上的数据集合,文件 IO 就是操作文件的手段。应用程序运行在用户空间,文件存于…

2026/8/23 18:48:22

混合检索(向量+关键词)详解

混合检索(Hybrid Retrieval)是一种在信息检索系统中,将向量检索(基于语义)与关键词检索(基于字面匹配)相结合的搜索策略。它的核心目标是结合两种方法的优势,取长补短,从…

2026/8/23 0:02:04

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/23 0:02:04

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/23 0:02:04

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/23 0:02:04

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/23 0:02:04

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/23 0:02:04

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/23 13:29:45

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/23 6:14:43

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/23 4:22:01

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…