Переключатель с enum не работает - Arduino Mega 2560 - PullRequest
1 голос
/ 21 марта 2019

Это просто «рабочий» пример моей проблемы. В цикле функция изменяет значение кнопки, и оно должно выводить на последовательный монитор «ВНИЗ» и «ВВЕРХ», но печатается только первое. Но если прокомментировать переменную 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;
  }
}

1 Ответ

1 голос
/ 21 марта 2019

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

...