使用枚举切换不工作 - Arduino Mega 2560
Switch with enum not working - Arduino Mega 2560
这只是我的问题的一个 "working" 示例。
在循环函数中更改按钮值,它应该打印到串行监视器 "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;
}
}
老实说,这让我有点难过,但我自己编译后发现了这个问题。这是一个 Error: Jump to case label 最赞的回复,有一个很好的解释,但总结一下:您在编译器认为相同的范围内声明了这个变量,因此编译器知道它在那里,但是当它返回到该范围对于为什么未声明它感到困惑。
这只是我的问题的一个 "working" 示例。 在循环函数中更改按钮值,它应该打印到串行监视器 "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;
}
}
老实说,这让我有点难过,但我自己编译后发现了这个问题。这是一个 Error: Jump to case label 最赞的回复,有一个很好的解释,但总结一下:您在编译器认为相同的范围内声明了这个变量,因此编译器知道它在那里,但是当它返回到该范围对于为什么未声明它感到困惑。