課程目標(biāo)
- 中斷程序的應(yīng)用
- arduino的中斷函數(shù)
- 中斷程序的實(shí)際應(yīng)用
相關(guān)知識(shí)
中斷程序: 中斷程序可以看作是一段獨(dú)立于主程序之外的程序,當(dāng)中斷觸發(fā)時(shí),控制器會(huì)暫停當(dāng)前正在運(yùn)行的主程序,而跳轉(zhuǎn)去運(yùn)行中斷程序,中斷程序運(yùn)行完后,會(huì)再回到之前主程序暫停的位置,繼續(xù)運(yùn)行主程序。
在程序的運(yùn)行中,我們時(shí)常需要監(jiān)控一些事件的發(fā)生,比如對(duì)某一傳感器的返回?cái)?shù)據(jù)進(jìn)行解析。隨著程序功能增加,輪詢到指定功能時(shí)需要等待的時(shí)間變長(zhǎng),效率會(huì)很低。而使用中斷方式檢測(cè),可以到達(dá)實(shí)時(shí)檢測(cè)的效果。
**Arduino的中斷函數(shù):**外部中斷和定時(shí)中斷
外部中斷的定義: 一般由外設(shè)發(fā)出中斷請(qǐng)求,如:鍵盤中斷、打印機(jī)中斷、外部中斷需外部中斷源發(fā)出中斷請(qǐng)求才能發(fā)中斷。
attach interrupt(interrupt,function,mode)
1)interrupt: 中斷號(hào),UNO只用0,1,即代表D2,D3口
2)function:調(diào)用中斷函數(shù),中斷發(fā)生時(shí)調(diào)用的函數(shù)
3)mode:中斷觸發(fā)模式
low 當(dāng)針腳輸入為低時(shí),觸發(fā)中斷
change 當(dāng)針腳輸入發(fā)生變化時(shí),觸發(fā)中斷
rising 當(dāng)針腳由低變高時(shí),觸發(fā)中斷
falling 當(dāng)針腳由高到低時(shí),觸發(fā)中斷
定時(shí)中斷的定義: 是指主程序在運(yùn)行一段程序過后自動(dòng)進(jìn)行的中斷服務(wù)程序。
常見的定時(shí)庫有FlexiTimer2.h和Ms.Timer2.h
void start() 開啟定時(shí)中斷
void stop() 關(guān)閉定時(shí)中斷
#include< MsTimer2.h >
void flash()
{
static boolean cutput=HIGH;
digitalWrite(13,OUTPUT);
OUTPUT=!OUTPUT;
MsTimer2:set(500,flash);
MsTimer2:start();
}
void loop()
{}
使用外部中斷注意:
1.中斷服務(wù)程序不能夠有參數(shù)和返回值,即void Function name(void){}
2.在中斷函數(shù)中delay()函數(shù)將不起作用
3.在中斷函數(shù)中millis()函數(shù)的值不會(huì)增加
4.得到的串行數(shù)據(jù)將會(huì)丟失
5.需在中斷函數(shù)內(nèi)部更改的值需聲明為volatile類型
電路搭建
所需材料
ArduinoUNO * 1
震動(dòng)傳感器模塊 * 1
LED * 1
220Ω電阻 * 1
杜邦線若干
電路連接
程序編寫
練習(xí)一:震動(dòng)監(jiān)測(cè)
不使用中斷的方式實(shí)現(xiàn)監(jiān)測(cè)到震動(dòng)后,LED點(diǎn)亮兩秒后熄滅,再次監(jiān)測(cè)到震動(dòng)后,再次點(diǎn)亮。
圖形化方式:
直接用條件判斷的方式實(shí)現(xiàn)了這個(gè)功能
代碼方式:
/* 項(xiàng)目名稱:條件判斷制作震動(dòng)監(jiān)測(cè)
* 項(xiàng)目時(shí)間:2022.03.15
* 項(xiàng)目作者:MRX
*/
const int LedPin = 9;
const int SensorPin = 2;
void setup() {
pinMode(LedPin,OUTPUT);
pinMode(SensorPin,INPUT);
digitalWrite(LedPin,LOW);
}
void loop() {
if(digitalRead(SensorPin) == LOW){
digitalWrite(LedPin,HIGH);
delay(1000);
}
else{
digitalWrite(LedPin,LOW);
}
}
練習(xí)二:震動(dòng)監(jiān)測(cè)
使用中斷方式實(shí)現(xiàn)上述功能。
圖形化方式:
代碼方式:
/* 項(xiàng)目名稱:中斷制作震動(dòng)監(jiān)測(cè)
* 項(xiàng)目時(shí)間:2022.03.15
* 項(xiàng)目作者:MRX
*/
const int LedPin = 9;
const int SensorPin = 2;
char state = LOW;
void setup() {
pinMode(LedPin,OUTPUT);
pinMode(SensorPin,INPUT);
attachInterrupt(0, blink, FALLING);
digitalWrite(LedPin,LOW);
}
void loop() {
if (state == HIGH) { // 如果state為HIGH
state = LOW;
digitalWrite(LedPin, HIGH); // 亮燈
delay(500); //延時(shí)500ms
}
else {
digitalWrite(LedPin, LOW); // 否則,關(guān)燈
}
}
void blink() { //中斷函數(shù)blink()
state = !state; //一旦中斷觸發(fā),state狀態(tài)反轉(zhuǎn)
}
-
傳感器
+關(guān)注
關(guān)注
2553文章
51458瀏覽量
756922 -
led燈
+關(guān)注
關(guān)注
22文章
1592瀏覽量
108458 -
外部中斷
+關(guān)注
關(guān)注
1文章
132瀏覽量
15891 -
Arduino
+關(guān)注
關(guān)注
188文章
6477瀏覽量
187952 -
定時(shí)中斷
+關(guān)注
關(guān)注
0文章
19瀏覽量
8607
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
外部按鍵中斷精準(zhǔn)控制步進(jìn)電機(jī)起保停,正反轉(zhuǎn)(Arduino+TB6600驅(qū)動(dòng)器)資料下載
Arduino外部中斷的相關(guān)資料分享
stm32外部中斷系列
![stm32<b class='flag-5'>外部</b><b class='flag-5'>中斷</b>系列](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
Arduino中斷學(xué)習(xí)
![<b class='flag-5'>Arduino</b><b class='flag-5'>中斷</b>學(xué)習(xí)](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
Arduino 外部中斷
![<b class='flag-5'>Arduino</b> <b class='flag-5'>外部</b><b class='flag-5'>中斷</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
arduino系列教程之觸摸開關(guān)(外部中斷)開關(guān)小燈led
![<b class='flag-5'>arduino</b>系列教程之觸摸開關(guān)(<b class='flag-5'>外部</b><b class='flag-5'>中斷</b>)開關(guān)小燈led](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
STM32---外部中斷
![STM32---<b class='flag-5'>外部</b><b class='flag-5'>中斷</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
第八章 外部中斷
![第八章 <b class='flag-5'>外部</b><b class='flag-5'>中斷</b>](https://file.elecfans.com/web2/M00/09/16/pYYBAGD0FvWAeWpFAAAb1Fux1oA753.jpg)
STM32如何配置外部中斷?STM32外部中斷配置步驟
STM32外部中斷大問題
![STM32<b class='flag-5'>外部</b><b class='flag-5'>中斷</b>大問題](https://file.elecfans.com/web2/M00/09/16/pYYBAGD0FvWAeWpFAAAb1Fux1oA753.jpg)
評(píng)論