使用attachInterrupt函数
函数参数
1,digitalPinToInterrupt(pin) 使用的中断,传入引脚号
2,ISR,中断处理函数的名称
3,触发中断的引脚状态变化
- LOW 引脚低电平触发中断
- CHANGE 引脚电平变化触发中断
- RISING 引脚电平由低到高触发中断
- FALLING 引脚电平由高到低触发中断
- HIGH 引脚低高平触发中断(Arduino Due 板子才有)
各板子的外部中断引脚号
外部中断引脚号
板子型号 | int.0 | int.1 | int.2 | int.3 | int.4 | int.5 |
Uno, Ethernet | 2 | 3 | ||||
Mega2560 | 2 | 3 | 21 | 20 | 19 | 18 |
32u4 based (e.g Leonardo, Micro) | 3 | 2 | 0 | 1 | 7 |
Arduino Due所有数字引脚,ArduinoZero所有数字引脚除了引脚4
示例程序如下
int pin = 13;
volatile int state = LOW;
void setup(){
pinMode(pin,OUTPUT);
attachInterrupt(digitalPinToInterrupt(pin), blink,CHANGE);
}
void loop(){
digitalWrite(pin, state);
}
void blink(){
state = !state;
}