

#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:下降沿触发。
 
 
- 返回值:无。
