我正在检查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
似乎只读取一次并永久存储!
答案 0 :(得分:2)
您需要在while循环内移动digitalread
函数。
如果使用的是物理交换机,则需要为交换机配备某种防抖机制。请查看Simple Debounce Routine的一些想法。
答案 1 :(得分:0)
只要ok_btn
不为0,它就不会离开while循环,因此它不会读取按钮,最好检查{{ 1}}