变量虽然不稳定但不会改变状态

时间:2019-08-09 10:24:44

标签: c++ arduino volatile arduino-c++

我正在检查while循环条件下是否按下了一个开关(负逻辑)。但是如果按下按钮,存储输入按钮按下的变量不会更改状态。如果我一直按下开关并重置Arduino板,则可以识别出按下状态。

我尝试使变量可变,但是我不明白为什么它仍然不起作用?我也尝试从寄存器而不是digitalRead读取,但徒劳。

volatile char ok_btn;
ok_btn= digitalRead(10);        

while(ok_btn!=0)
{
Serial.println("ok button not pressed/n");
delay(200);
}

Serial.println("ok button pressed/n");

变量ok_btn似乎只读取一次并永久存储!

2 个答案:

答案 0 :(得分:2)

  1. 您需要在while循环内移动digitalread函数。

  2. 如果使用的是物理交换机,则需要为交换机配备某种防抖机制。请查看Simple Debounce Routine的一些想法。

答案 1 :(得分:0)

只要ok_btn不为0,它就不会离开while循环,因此它不会读取按钮,最好检查{{ 1}}