Кажется, мой код arduino работает сам по себе и не реагирует на ввод пользователя.
Устранение любых функций delay () в коде и проверка проводки на самой плате.
Это настройка, которая запускается в начале кода. Предположим, что все переменные начинаются с 0 и ложь
#include < LiquidCrystal.h >
int motorPin = 8;
int startButton = 13;
int upButton = 12;
int downButton = 11;
int secs = 0;
bool toggled = false;
int timer = 0;
bool start = false;
int amount = 0;
LiquidCrystal lcd(8, 9, 5, 4, 3, 2);
void setup() {
Serial.begin(9600);
pinMode(startButton, INPUT);
pinMode(A0, INPUT);
lcd.begin(16, 2);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("WASHING MACHINE");
}
void loop() {
if (digitalRead(startButton) == HIGH) {
while (digitalRead(startButton) == HIGH) {}
bool loopStop = false;
while (!loopStop) {
if (digitalRead(upButton) == HIGH) {
while (digitalRead(upButton) == HIGH) {}
timer += 5;
amount++;
lcd.clear();
lcd.print("Time:" + String(timer));
Serial.println(amount);
} else if (digitalRead(downButton) == HIGH) {
while (digitalRead(downButton) == HIGH) {}
timer -= 5;
amount--;
lcd.clear();
lcd.print("Time:" + String(timer));
Serial.println(amount);
}
if (digitalRead(startButton) == HIGH) {
while (digitalRead(startButton) == HIGH) {}
loopStop = true;
}
}
start = true;
}
if (start) {
if (digitalRead(startButton) == HIGH) {
delay(500);
if (digitalRead(startButton) == LOW) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Time: " + timer);
}
}
}
}
Когда нажата кнопка «вверх», она добавляет единицу к числу на ЖК-дисплее, а когда нажата кнопка «вниз», она вычитает единицу. Когда кнопка запуска нажимается снова, она запускает нижний оператор if.