用的 UNO 板子,进行中断学习实验。程序预期目标:主程序控制13脚自带灯一直闪烁,用2脚作为外部中断的控制引脚,中断后执行的程序是让12脚的LED以1秒的速度闪烁
实际效果:13脚正常闪烁,并在中断后停止;
12灯中断后一直闪烁不停,并且速度比程序上的1秒要快的多。
希望达到效果:13正常1秒 12中断后正常闪烁一次,然后自动停止,并程序回到主程序继续
程序:
int pbIn = 0; // 定义中断引脚为0,也就是D2引脚
int ledOut = 12; // 定义输出指示灯引脚
volatile int state = LOW;
void setup()
{
pinMode(13, OUTPUT); // 定义默认输入状态
// 置ledOut引脚为输出状态
pinMode(ledOut, OUTPUT);
//pinMode(ledOut, INPUT);
// 监视中断输入引脚的变化
attachInterrupt(pbIn, stateChange, RISING);
}
void loop()
{
digitalWrite(13,HIGH);
delay(1000);
digitalWrite(13,LOW);
delay(1000);
}
void stateChange()
{
digitalWrite(12,HIGH);
delay(1000);
digitalWrite(12,LOW);
//state = !state;
//digitalWrite(ledOut, state);
} |