-1

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

我尝试使变量 volatile 但我不明白为什么它仍然不起作用?我也尝试从寄存器中读取,而不是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只是读取一次并永远存储它!

4

2 回答 2

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

  2. 如果您使用的是物理交换机,则需要为交换机提供某种去抖动机制。查看Simple Debounce Routine了解一些想法。

于 2019-08-09T10:29:43.507 回答
0

只要ok_btn不是 0,它就不会离开您的 while 循环,因此它不会读取按钮,最好检查ok_btna的值if/else

于 2019-08-09T19:00:01.067 回答