Я пытаюсь работать с простой схемой Arduino, которая увеличивает счетную переменную при нажатии кнопки в цепи (подключенной как INPUT to PIN 8). Мой код такой же простой:Использование PushButton в качестве триггера в Arduino
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int c = 0, btnPIN, btnVal;
void setup()
{
btnPIN = 8;
pinMode(btnPIN, INPUT);
lcd.begin(16,2);
lcd.clear();
}
void void loop()
{
btnVal = digitalRead(btnPIN);
if (btnVal == LOW)
{
c++;
lcd.clear();
lcd.print(c);
}
}
Проблема: счетчик увеличивается более чем на 1 при каждом нажатии кнопки. Немного печатается на последовательном мониторе, что каждый раз, когда кнопка нажата, а напряжение LOW, условный код выполняется несколько раз, а счетчик увеличивается на несколько раз вместо 1.
Возможно, мне нужно напишите какую-нибудь логику, которая проверяет, была ли кнопка первоначально отключена, затем нажата, а затем снова отпущена, а затем эти шаги вызовут требуемое действие.
Решение, которое я сейчас работаю с как в соответствии с (который прекрасно работает):
int btnStatus = 0;
void loop()
{
btnVal = digitalRead(btnPIN);
if (btnVal == LOW)
btnStatus = 1;
if(btnStatus == 1 && btnVal == HIGH)
{
c++;
lcd.clear();
lcd.print(c);
btnStatus = 0;
}
}
Я не уверен, если есть более простое решение, доступное или, если такой подход является неправильным по другим причинам? Любые советы были бы очень желанными!
Спасибо! Этот подход выглядит как более чистый и организованный способ добиться успеха, поскольку схема усложняется. Я на самом деле собираюсь использовать три кнопки, чтобы это помогло! –