Arduino:if-compare参数

Elm*_*mer 5 c c++ embedded arduino

我正在尝试启动并运行一个小型BMP085气压计项目.我希望能够在不同的操作模式(MODE_PRESSURE和MODE_ALT)之间切换.我有MODE_PRESSUREMODE_ALT定义为const int.

const int MODE_PRESSURE = 1;  // display pressure and temp
const int MODE_ALT      = 2;  // display altitude relative to sea level
int mode;                     // stores the current mode

void setup {
    mode = MODE_PRESSURE;
}

void loop {

    // Read mode button and set mode accordingly
    int buttonPressed = readButtons();

    switch(buttonPressed) {
    case BTN_MODE:
        if(mode == MODE_PRESSURE) { mode = MODE_ALT; }
        if(mode == MODE_ALT) { mode = MODE_PRESSURE; }
        Serial.println(mode); // <<-- always prints 1 ?!
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

按下模式按钮时,我想切换当前模式.但我被困在了if(mode == MODE_PRESSURE).这句话莫名其妙地从未评估为真......?

我不是很流利C,有什么我想念的吗?我可以不比较const intint变量吗?

PS:我也尝试#define过MODE_PRESSURE和MODE_ALT const byte,但似乎没什么用.

Gri*_*han 4

添加else如下:

    if(mode == MODE_PRESSURE)  
       mode = MODE_ALT; 
    else if(mode == MODE_ALT) # although not need but keep if here also
       mode = MODE_PRESSURE; 
Run Code Online (Sandbox Code Playgroud)

可以使用嵌套开关:

switch(mode){
     case MODE_PRESSURE: mode = MODE_ALT; 
             break; 

     case MODE_ALT: mode = MODE_PRESSURE; 
             break;
}
Run Code Online (Sandbox Code Playgroud)