带有枚举的开关不起作用-Arduino Mega 2560

时间:2019-03-21 04:01:45

标签: arduino arduino-ide

这只是我的问题的一个“起作用”的例子。 在循环功能中,更改按钮值,它应打印到串行监视器“ DOWN”和“ UP”,但仅打印第一个。但是,如果在change_timestamp_selected函数中注释bool变量,程序将以应有的方式运行...

如果任何人都可以发现错误,请帮助我。谢谢。

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 个答案:

答案 0 :(得分:1)

老实说,这让我有些困惑,但是我自己编译后就发现了问题。这是Error: Jump to case label的最高评价,有一个很好的解释,但总结一下:您在编译器视为相同作用域的地方声明了此变量,以便编译器知道它存在,但是当它返回到在那个范围上,为什么不声明它感到困惑。