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