c - 按钮长按后停止计数

标签 c arduino arduino-ide

我有一个使用arduino的项目,其基本思想是通过一个按钮来增加一个计数器。
我正在寻找的是,一旦按钮被触发很长一段时间,就不会让 counter1 例如增加 1。

那么我如何使用 Arduino 的软件来完成这个任务呢?

最佳答案

一种可能性是使用具有正边沿的中断引脚。您应该使用与按钮并联的电容器来消除抖动。 这是arduino外部中断的引用页面。 External Interrupts in Arduino .

我认为用一些代码示例来描述它很好。如果您对此有疑问,请告诉我。顶部的表格很重要。并非所有引脚都可以用于它。

因此,每次按下按钮都会触发中断(如果选择选项为“高”)。如果按住按钮,则不会触发中断。在中断服务例程中,您递增计数器。

为了消除按钮的抖动,您可以使用例如100 nF 陶瓷电容器(例如 10V)。但去抖可以通过多种方式完成。这是关于与 arduino 一起使用的去抖开关的问题,有很好的答案。 Switch debouncing - would toggle switch still bounce 。还有一个 ISR 应该可以很好地工作。使用它您不再需要硬件去抖。

关于c - 按钮长按后停止计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49057513/

相关文章:

c++ - Arduino PinChangeInt.h 产生编译器错误

c - 如何切换字符串大小写?

c - 将递归 C 程序转换为 LEGv8 汇编

c++ - Arduino:字符串连接?

c++ - Arduino: union 中的结构顺序

ssl - 使用带 Arduino IDE 的 ESP8266 启动 TLS 握手

c - 从不同函数访问分配的数组时出现 SegFault

c - 如何将 getaddrinfo 中的 IPv6 地址存储到字符数组中?

c++ - 如何在函数外部访问函数中局部变量的值?

python - 无法连接到 FreePIE 中的正确 COM 端口