文章目录
外部中断常用arduino开发板外部中断引脚外部中断程序编写外部中断函数外部中断模式例程
定时器中断例程
外部中断
常用arduino开发板外部中断引脚
不同的Arduino开发板外部中断引脚不同,总结常用的有如下几个:
UNO
int.0int.123
具体见图:
Ethernet
int.0int.123
Nano
int.0int.123
具体见图:
Mini
int.0int.123
具体见图:
Mega2560
int.0int.1int.2int.3int.4int.52321201918
具体见图:
Leonardo
int.0int.1int.2int.33201
具体见图:
micro
int.0int.1int.2int.332RX1TX1
Yun(详情见图)
int.0int.1int.2int.318192021
具体见图
2009
int.0int.1int.2int.318192021
具体见图:
int.0int.123
pro
int.0int.123
具体见图:
promini
int.0int.123
具体见图:
外部中断程序编写
外部中断函数
中断函数即执行的函数,这个函数无返回值且没有参数。 定义中断函数后,在Setup初始化函数中配置如下函数:
attachInterrupt(interrupt, function, mode);
//interrupt为中断号,function为中断函数,mode为中断触发模式
在Arduino Due中,中断设置为:
attachInterrupt(pin, function, mode);
//due 的每个IO口均可进行外部中断,故引脚号为中断号。
退出中断所有型号的控制板都可用中断分离函数detachInterrupt(interrupt );来取消中断设置。
外部中断模式
外部中断分为四种模式:
LOW低电平触发CHANGE电平变化时触发(高电平变低电平、低电平变高电平)RISING上升沿触发FALLING下降沿触发HIGH高电平触发(该中断模式仅适用于Arduino due)
例程
以按键触发为例,准备材料:
Uno\Nano板
下载数据线
面包板及杜邦线
LED灯
常用限流电阻 如图连接
int LED = 13; //定义LED为数字引脚13
int key = 2; //按键触发中断0
char state = LOW;//标志位
void setup() {
pinMode(LED, OUTPUT); //LED为输出模式
pinMode(key, INPUT_PULLUP); //输入模式
attachInterrupt(0, blink, FALLING);//下降沿触发中断0,调用blink函数
}
void loop() {
if (state == HIGH) { // 如果state为HIGH
state = LOW;
digitalWrite(LED, HIGH); // 亮
delay(500); //延时500ms
}
else {
digitalWrite(LED, LOW); // 否则,灭
}
}
void blink() { //中断函数blink()
state = !state; //一旦中断触发,state状态反转
}
效果为,每按下一次按键LED灯就闪一次。 类似可套用于其他工程中。
定时器中断
首先需要添加MsTimer2库,并在程序中引用头文件 MsTimer2.h。
例程
使用例程如下:
#include
int num = 0; //计数
//中断服务程序
void onTimer()
{
Serial.print("The num is : ");
Serial.println(num++);
}
void setup()
{
Serial.begin(9600); //初始化串口
MsTimer2::set(1000, onTimer); //设置定时器中断,(时长,中断函数)
MsTimer2::start(); //开始计时
}
void loop(){
}
打开串口查看器 效果为: The num is : 0 The num is : 1 The num is : 2 …… 以此类推