1、什麼是中斷? (這裡就不多解釋了,主要講一下具體使用)
2、各種闆子的中斷:UNO、NANO、ProMINI這仨闆子都是INT0(D2針腳:中斷編号為0)、INT1(D3針腳:中斷編号為1),其它闆子參考電路圖。
3、中斷函數、中斷觸發模式與設定中斷
【中斷函數】:就是你要去執行的函數,這個函數不能帶任何參數,且沒有傳回類型。
如:
void hello()
{
Serial.println("hello");
}
【中斷模式】:就是你的中斷觸發方式。在大多數arduino上有以下四種觸發方式:
LOW 低電平觸發
CHANGE 電平變化,高電平變低電平、低電平變高電平
RISING 上升沿觸發
FALLING 下降沿觸發
HIGH 高電平觸發(該中斷模式僅适用于Arduino due)
【設定中斷】:在定義中斷函數後,要使用外部中斷,你隻需要在程式的Setup部配置設定置好中斷函數即可,配置函數如下:
attachInterrupt(interrupt, function, mode); //interrupt為你中斷通道編号,function為中斷函數,mode為中斷觸發模式
需要注意的是在Arduino Due中,中斷設定有點不同:
attachInterrupt(pin, function, mode); //due 的每個IO均可以進行外部中斷,是以這裡第一個參數為pin,即你使用的引腳編号。
如果在程式中途,你不需要使用外部中斷了,你可以用中斷分離函數來取消這一中斷設定:
detachInterrupt(interrupt);
同樣在Arduino Due上,該函數為detachInterrupt(Pin);。
4、例程:
外部中斷的使用也是非常簡單的,下面我們來看一個官方提供的例程
int pin = 13;
volatile int state = LOW;
void setup()
{
pinMode(pin, OUTPUT);
attachInterrupt(0, blink, CHANGE);//當int.0電平改變時,觸發中斷函數blink
}
void loop()
{
digitalWrite(pin, state);
}
void blink()//中斷函數
{
state = !state;
}
5、應用:利用外部中斷,可以在很多地方提高你程式的運作效率。你可以運用以上知識,做一個簡單的監控裝置。