我的一个朋友(他不使用 StackExchange)编写了一个程序,该程序使用外部中断在下降沿捕获按钮按下(实际上是 CW 键控桨)(按下桨将相应的输入引脚连接到地)。
#define PADDLE_LEFT 2
#define PADDLE_RIGHT 3
volatile bool paddle_flag = false ;
...
void paddle_down () {
paddle_flag = true ;
}
...
attachInterrupt(digitalPinToInterrupt(PADDLE_LEFT), paddle_down, FALLING);
attachInterrupt(digitalPinToInterrupt(PADDLE_RIGHT), paddle_down, FALLING);
这应该激活外部中断 INT0 和 INT1。
对于一些较旧的 Arduino Nano 板,这可以按预期工作,即当按下一个或两个桨时发生中断(而不是在释放时)。然而,他有一些较新的 Arduino Nano 板,其中完全相同的程序行为不同:任何状态变化都会发生中断,即像 PCINT 中断,而不像 INT0、INT1。