2017-03-05 19 views
0

功能改变状态:Arduino的按钮扳机不从低到高

当用户按下这个大圆顶按钮,Arduino的状态应该从“0” /低以关“1” /在Arduino的串行监视器的高。

问题:

当我触发这个大圆顶按钮,国家并没有从低到​​高的触发,但仍维持在低水平。

我已将连接的“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); 
} 
+0

代码'outputState | = digitalRead(buttonPin);'假定返回'HIGH'将等同于'true','LOW'等同于'false'。尝试用'outputState =(HIGH == digitalRead(buttonPin));'替换。 –

+0

@ J.Piquard,仍然没有触发 – Luke

+1

@Luke这是一个问题,它很容易调试硬件在您的处置..您可以开始在上述指令之后添加'Serial.println(outputState)',然后查看值在该变量内。 –

回答

1

声明outputState |= digitalRead(buttonPin);正在使用或分配所以一旦outputState设置为1(高),则永远不会再回到0(LOW)。这是因为对任何内容执行任意操作并且1总是导致1.

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

outputState = digitalRead(buttonPin);