尝试在按下此按钮时去抖动
Trying to debounce this button for when pressed
所以我有一个T型梁。我正在尝试在按下按钮时实现 D 反弹,以便在按下按钮时会有去抖动的时间。目前我让它工作,以便当按下按钮时,它会打印,但由于按钮的噪音,它会打印数百次。我已经输入了去抖代码,但是它没有按预期工作,我不确定为什么。
请查看下面的代码,因为我正在努力实现它。
#include <LoRa.h>
#define SS 18 // GPIO18 −− CS
#define RST 14 // GPIO14 −− RESET
#define DI0 26 // GPIO26 −− I n t e r r u p t Request
#define BAND 868E6 // 868MHz −− UK/European Radio
const int buttonPin = 38;
int buttonState = LOW;
unsigned long lastDebounceTime = 0;
unsigned long debounceDelay = 200;
void setup() {
pinMode(buttonPin, INPUT);
digitalWrite(buttonPin, HIGH);
// i n i t i a l i z e S e r i a l Monitor
Serial.begin(115200);
}
int counter = 0;
void loop() {
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH) {
( (millis() - lastDebounceTime) > debounceDelay);
}
else {
Serial.println("HELLO!");
lastDebounceTime = millis();
}
您的代码似乎包含一个已执行但从未使用结果的语句。我说的是说( (millis() - lastDebounceTime) > debounceDelay)
的那句话.我稍微更改了您的代码以实现正确的去抖动:
bool buttonState = LOW, previousState = HIGH, buttonPressed = false;
void loop()
{
buttonState = digitalRead(buttonPin);
if(buttonState == HIGH)
{
if(previousState == LOW)
{
lastDebounceTime = millis();
}
else if(millis() - lastDebounceTime > debounceDelay && !buttonPressed)
{
// this will be executed once after debouncing
Serial.println("HELLO!");
buttonPressed = true;
}
}
else
{
buttonPressed = false;
}
previousState = buttonState;
}
相关文章:
- 问:如何使用C++中的按钮从窗口打开窗口
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- QML按钮点击功能执行顺序
- 当用户超过按钮点击限制时报告
- 函数计算用户按下按钮的频率
- 热键/按钮,根据需要进行编译,但不运行(在F5和Ctrl+Shift+B之间)
- FLTK:按下哪个按钮 - 将数字传递给按钮的回调 (lambda)
- 如何通过按下第三个窗口中的按钮,将QString从一个窗口获取到另一个窗口
- 垂直方向的 Gtk3+ 旋转按钮 (c/c++)
- Qt自定义QPush按钮未显示在布局上
- SDL 操纵杆按钮按下/C++
- 如何使用按钮更新GTK3图像以使用C++从相机捕获图片
- Qt中来自不同功能的按钮引用
- WinAPI 在单击第一个对话框上的按钮控件并销毁第一个对话框后创建第二个对话框
- 带有框架的 QGraphicsTextItem 的 QPropertyAnimation 会使文本抖动
- ImGui 在单击按钮后冻结
- WinAPI 无法创建按钮
- 在C++中去抖动
- 按钮悬停在 QT 中垂直布局的选项卡小部件中不起作用
- 尝试在按下此按钮时去抖动