

#define vibratorPin 2 // 振动器引脚
#define buzzerPin 3 // 蜂鸣器引脚
int count = 0; // 计数变量
int flag = 0; // 中断执行标志位
void setup()
{
pinMode(vibratorPin, INPUT_PULLUP); // 按键设置为输入带上拉
pinMode(buzzerPin, OUTPUT);
attachInterrupt(0, buzzerDi, FALLING); // 设置ARDUINO UNO中断0(数字IO 2),下降沿触发中断函数buzzerDi
Serial.begin(9600);
}
void loop()
{
// 如果flag被置一,说明有中断产生,执行该段程序
if (flag == 1)
{
flag = 0; // flag清零
digitalWrite(buzzerPin, HIGH); // 蜂鸣器响
delay(1000); // 延时1000ms
}
else
{
digitalWrite(buzzerPin, LOW); // 没有中断时候,蜂鸣器不响
}
Serial.println(count); // 串口显示中断次数
}
// 中断函数buzzerDi
void buzzerDi()
{
flag = 1; // 置位标志位
count++; // 进中断次数加一
}
函数介绍
attachInterrupt()
- 描述:外部中断配置函数。
- 函数原型:attachInterrupt(interrupt, ISR, mode)
- 参数:
- interrupt: 中断号。不同Arduino开发板中断号不同。Uno R3有两个外部中断,分别为数字管脚2(中断0)和数字管脚3(中断1)。
- ISR: 中断处理函数。此函数不带参数,没有返回值。
- mode: 中断触发方式。
- LOW: 低电平触发。
- CHANGE:管脚状态改变触发。
- RISING:上升沿触发。
- FALLING:下降沿触发。
- 返回值:无。