Всякий раз, когда counter_1 получает значение 4, Arduino автоматически изменяет его на 1 и поэтому пропускает 4-й случай.

Как я могу решить эту проблему? Я пытаюсь клонировать настройки времени Casio F-91W. Всякий раз, когда я нажимаю кнопку, счетчик увеличивается и переходит к одной левой цифре, которую мы изменим (в этом методе цифры будут только мигать). Я установил 4 случая:

  1. Мигает вторая цифра
  2. Мигают цифры минут
  3. Мигает цифра часов
  4. Не мигать
void updateCounter_1() {
    counter_1 = counter_1 + 1;
    if (counter_1 == 5) {
        counter_1 = 1;
    }
}

void settTime(){

    switch (counter_1) {
    case 1:
        lcd.setCursor(6, 1);
        lcd.print("  ");
        delay(150);
        updateHrs();
        updateMins();
        printSecs();
        delay(150);
        break;

    case 2:
        lcd.setCursor(3, 1);
        lcd.print("  ");
        delay(150);
        printMins();
        delay(150);
        break;

    case 3:
        lcd.setCursor(0, 1);
        lcd.print("  ");
        delay(150);
        printHrs();
        delay(150);
        break;

    case 4:
        break;
    }
}
0
Erinç Emre Çelikten 15 Дек 2019 в 02:34
Вместо установки counter_1 и выполнения if попробуйте следующее: counter_1 = (cointer_1 + 1 % 4) .
 – 
J-Cake
15 Дек 2019 в 02:37

1 ответ

Всякий раз, когда counter_1 получает значение 4, Arduino автоматически изменяет его на 1 и поэтому пропускает 4-й случай.

Это не совсем правильно, по крайней мере, не на основе кода, который вы нам показали.

Когда counter_1 равно 4, переключатель переходит к случаю 4, но этот случай ничего не делает. При следующем обновлении счетчика он сбрасывается на 4.

Обратите внимание, что случаи с 1 по 3 имеют некоторые задержки, а случай 4 — нет, поэтому может показаться, что случай 4 не происходит. Но это так, это просто намного быстрее, чем другие.

1
Adrian McCarthy 15 Дек 2019 в 07:59