Код Arduino очень медленный и не отвечает.ЖК-экран, кажется, меняется без ввода пользователя - PullRequest
0 голосов
/ 29 апреля 2019

Кажется, мой код 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.

...