Переключатель с enum не работает - Arduino Mega 2560

Это просто "рабочий" пример моей проблемы. В цикле функция изменяет значение кнопки, и она должна выводить на монитор последовательного порта «ВНИЗ» и «ВВЕРХ», но печатается только первое. Но если прокомментировать переменную bool в функции change_timestamp_selected, программа будет работать так, как должна ...

Если кто-то может обнаружить ошибку, пожалуйста, помогите мне. Спасибо.

enum btn {btnRIGHT, btnUP, btnDOWN, btnLEFT, btnSELECT, btnNONE} button;
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
}


void loop() {
  button = btnDOWN;
  change_timestamp_selected();
  delay(1000);
  button = btnUP;
  change_timestamp_selected();
  delay(1000);
}
void change_timestamp_selected() {
  switch (button) {
    case btnDOWN:
      Serial.println("DOWN");
      bool if_commented_works = true;
      break;
    case btnUP:
      Serial.println("UP");
      break;
  }
}

person Luís Chaves    schedule 21.03.2019    source источник


Ответы (1)


Честно говоря, это немного озадачило меня, но я обнаружил проблему, как только сам скомпилировал ее. Это Ошибка: перейти к метке случая, самый популярный ответ, есть хорошее объяснение , но подведем итог: вы объявили эту переменную в том, что компилятор видит в той же области видимости, чтобы компилятор знал, что она есть, но когда он возвращается в эту область, он не понимает, почему она не объявлена.

person Aidan Welch    schedule 21.03.2019
comment
Спасибо ... Добавление {} внутрь футляра решило проблему ... Эй, босс! ахаха - person Luís Chaves; 21.03.2019
comment
Спасибо, без проблем. Это очень помогает, что я обнаружил при написании кода Arduino, если я действительно застрял, чтобы скомпилировать его на компиляторе, который возвращает ошибки. - person Aidan Welch; 21.03.2019