Arduino按钮触发器不会将状态从LOW更改为HIGH

时间:2017-03-05 02:26:11

标签: arduino arduino-uno

功能性:

当用户按下大圆顶按钮时,Arduino的状态应在Arduino的串行监视器上从' 0' / LOW变为' 1' / HIGH。

问题:

当我在大圆顶按钮上触发时,状态没有从低到​​高触发,它仍然保持低电平。

我已连接" Push To Make"在连接写入之后,连接到数字引脚2的一侧:BIG DOME PUSH BUTTON

但此时,触发状态无效,请协助。

const int buttonPin = 2; //the number for the pushbutton pin (DIGITALPIN)

uint8_t btnCnt = 1;

bool outputState = false;

void setup() {

  Serial.begin(9600);
  //for Push button pin
  pinMode(buttonPin, INPUT);

}

void loop() {

  outputState |= digitalRead(buttonPin); // if pushButton is high, set outputState (low does nothing)

  // Print the output
  if (outputState) {

    switch (btnCnt++) {
      case 100:
        --btnCnt;
        outputState = false;
        break;
    }

    Serial.println("1");
  } else {

    Serial.println("0");
    btnCnt = 0;
  }

  delay(100);
}

1 个答案:

答案 0 :(得分:1)

语句outputState |= digitalRead(buttonPin);正在使用OR赋值,因此一旦outputState设置为1(HIGH),它将永远不会再次返回0(LOW)。这是因为对任何事物和1执行OR将始终导致1。

如果您将此行更改为仅如下所示的分配,您应该会看到您期望的状态更改。

outputState = digitalRead(buttonPin);