RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Arduino篇—外部中斷

冬至子 ? 來源:X的創(chuàng)客課堂 ? 作者:MRXY ? 2023-11-01 17:29 ? 次閱讀

課程目標

  • 中斷程序的應(yīng)用
  • arduino的中斷函數(shù)
  • 中斷程序的實際應(yīng)用

相關(guān)知識

中斷程序: 中斷程序可以看作是一段獨立于主程序之外的程序,當中斷觸發(fā)時,控制器會暫停當前正在運行的主程序,而跳轉(zhuǎn)去運行中斷程序,中斷程序運行完后,會再回到之前主程序暫停的位置,繼續(xù)運行主程序。

圖片

在程序的運行中,我們時常需要監(jiān)控一些事件的發(fā)生,比如對某一傳感器的返回數(shù)據(jù)進行解析。隨著程序功能增加,輪詢到指定功能時需要等待的時間變長,效率會很低。而使用中斷方式檢測,可以到達實時檢測的效果。

**Arduino的中斷函數(shù):**外部中斷和定時中斷

外部中斷的定義: 一般由外設(shè)發(fā)出中斷請求,如:鍵盤中斷、打印機中斷、外部中斷需外部中斷源發(fā)出中斷請求才能發(fā)中斷。

attach interrupt(interrupt,function,mode)

1)interrupt: 中斷號,UNO只用0,1,即代表D2,D3口

2)function:調(diào)用中斷函數(shù),中斷發(fā)生時調(diào)用的函數(shù)

3)mode:中斷觸發(fā)模式

low 當針腳輸入為低時,觸發(fā)中斷

change 當針腳輸入發(fā)生變化時,觸發(fā)中斷

rising 當針腳由低變高時,觸發(fā)中斷

falling 當針腳由高到低時,觸發(fā)中斷

定時中斷的定義: 是指主程序在運行一段程序過后自動進行的中斷服務(wù)程序。

常見的定時庫有FlexiTimer2.h和Ms.Timer2.h

void start() 開啟定時中斷

void stop() 關(guān)閉定時中斷

#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ù)的值不會增加
4.得到的串行數(shù)據(jù)將會丟失
5.需在中斷函數(shù)內(nèi)部更改的值需聲明為volatile類型

電路搭建

所需材料

ArduinoUNO * 1
震動傳感器模塊 * 1
LED * 1
220Ω電阻 * 1
杜邦線若干

電路連接

圖片

程序編寫

練習(xí)一:震動監(jiān)測

不使用中斷的方式實現(xiàn)監(jiān)測到震動后,LED點亮兩秒后熄滅,再次監(jiān)測到震動后,再次點亮。

圖形化方式:

直接用條件判斷的方式實現(xiàn)了這個功能

圖片

代碼方式:

/* 項目名稱:條件判斷制作震動監(jiān)測
 * 項目時間:2022.03.15
 * 項目作者: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í)二:震動監(jiān)測

使用中斷方式實現(xiàn)上述功能。

圖形化方式:

圖片

代碼方式:

/* 項目名稱:中斷制作震動監(jiān)測
 * 項目時間:2022.03.15
 * 項目作者: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);          //延時500ms
  }
  else {
    digitalWrite(LedPin, LOW);    // 否則,關(guān)燈
  }
}
void blink() {               //中斷函數(shù)blink()
  state = !state;             //一旦中斷觸發(fā),state狀態(tài)反轉(zhuǎn)
}
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 傳感器
    +關(guān)注

    關(guān)注

    2550

    文章

    51035

    瀏覽量

    753063
  • led燈
    +關(guān)注

    關(guān)注

    22

    文章

    1592

    瀏覽量

    107950
  • 外部中斷
    +關(guān)注

    關(guān)注

    1

    文章

    131

    瀏覽量

    15816
  • Arduino
    +關(guān)注

    關(guān)注

    188

    文章

    6468

    瀏覽量

    186950
  • 定時中斷
    +關(guān)注

    關(guān)注

    0

    文章

    19

    瀏覽量

    8553
收藏 人收藏

    評論

    相關(guān)推薦

    外部按鍵中斷精準控制步進電機起保停,正反轉(zhuǎn)(Arduino+TB6600驅(qū)動器)資料下載

    外部按鍵中斷精準控制步進電機起保停,正反轉(zhuǎn)(Arduino+TB6600驅(qū)動器)這次帶來的是真正意義上的通過外部中斷來實現(xiàn)控制的,前面一
    發(fā)表于 06-29 07:19

    Arduino外部中斷的相關(guān)資料分享

    外部中斷外部中斷是由控制器設(shè)備發(fā)起的中斷請求。停止再在執(zhí)行的內(nèi)容去執(zhí)行中斷函數(shù)中的內(nèi)容
    發(fā)表于 02-15 06:34

    arduino定時中斷外部中斷怎么用?

    arduino定時中斷怎么用和外部中斷怎么用,可不可以和51單片機一樣使用
    發(fā)表于 11-08 07:43

    stm32外部中斷系列

    實現(xiàn)步驟1.如果串口中斷先配置串口,gpio中斷先配置gpio2.串口中斷組的選擇3.串口外部中斷控制器時鐘打開4.用
    發(fā)表于 11-26 12:36 ?2次下載
    stm32<b class='flag-5'>外部</b><b class='flag-5'>中斷</b>系列

    arduino 中斷 和millis語句

    arduino 中斷 和millis語句Arduino中支持如下幾種中斷: RESET中斷外部
    發(fā)表于 12-14 18:49 ?1次下載
    <b class='flag-5'>arduino</b> <b class='flag-5'>中斷</b> 和millis語句

    Arduino中斷學(xué)習(xí)

    提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔文章目錄Arduino中斷一、外部中斷學(xué)習(xí)1、Arduino 開發(fā)板的
    發(fā)表于 12-16 16:47 ?3次下載
    <b class='flag-5'>Arduino</b><b class='flag-5'>中斷</b>學(xué)習(xí)

    Arduino 外部中斷

    外部中斷外部中斷是由控制器設(shè)備發(fā)起的中斷請求。停止再在執(zhí)行的內(nèi)容去執(zhí)行中斷函數(shù)中的內(nèi)容
    發(fā)表于 12-16 16:51 ?11次下載
    <b class='flag-5'>Arduino</b> <b class='flag-5'>外部</b><b class='flag-5'>中斷</b>

    arduino系列教程之觸摸開關(guān)(外部中斷)開關(guān)小燈led

    一、首先是要了解一下arduino中斷模式有啥?哪些可以觸發(fā)中斷?二、接著是,了解不同芯片型號的arduino,可以接收外部
    發(fā)表于 12-16 16:51 ?8次下載
    <b class='flag-5'>arduino</b>系列教程之觸摸開關(guān)(<b class='flag-5'>外部</b><b class='flag-5'>中斷</b>)開關(guān)小燈led

    STM32外部中斷

    中斷都知道是怎么回事了外部中斷是怎么配置的吶?外部中斷又稱IO中斷/事件控制器(EXTI)
    發(fā)表于 01-14 15:14 ?2次下載
    STM32<b class='flag-5'>外部</b><b class='flag-5'>中斷</b>

    STM32---外部中斷

    目錄1.外部中斷描述2.外部中斷框圖總結(jié):經(jīng)過分析框圖,可以產(chǎn)生軟件中斷和事件中斷,軟件
    發(fā)表于 01-14 15:25 ?7次下載
    STM32---<b class='flag-5'>外部</b><b class='flag-5'>中斷</b>

    ARDUINO微控制器外部中斷處理

    電子發(fā)燒友網(wǎng)站提供《ARDUINO微控制器外部中斷處理.zip》資料免費下載
    發(fā)表于 10-27 11:50 ?2次下載
    <b class='flag-5'>ARDUINO</b>微控制器<b class='flag-5'>外部</b><b class='flag-5'>中斷</b>處理

    第八章 外部中斷

    第一節(jié)原理解讀打算寫一下中斷,又忍不住想說一下中斷的概念,去書上翻一翻,或者自己在搜索引擎上搜一下,都可以找到一大堆,包括本文寫的這個外部中斷也不例外。如果要寫光是
    的頭像 發(fā)表于 01-25 09:30 ?1406次閱讀
    第八章 <b class='flag-5'>外部</b><b class='flag-5'>中斷</b>

    STM32如何配置外部中斷?STM32外部中斷配置步驟

    STM32如何配置外部中斷?STM32外部中斷配置步驟? 作為一款現(xiàn)代化的微控制器,STM32系列芯片在各種應(yīng)用場合中廣泛應(yīng)用。其中最常見的應(yīng)用是
    的頭像 發(fā)表于 10-26 17:47 ?3527次閱讀

    STM32外部中斷大問題

    問題:一直進入中斷,沒有觸發(fā)信號,也一直進入。描述:開PA0為外部中斷,剛剛很好,一個觸發(fā)信號一個中斷,中斷函數(shù)沒有丟,也沒有搶跑,開PA1
    的頭像 發(fā)表于 11-08 08:00 ?2253次閱讀
    STM32<b class='flag-5'>外部</b><b class='flag-5'>中斷</b>大問題

    外部中斷的工作原理 外部中斷方式有哪些 為什么要使用外部中斷

    外部中斷的工作原理是單片機響應(yīng)外部事件的一種機制** **。
    的頭像 發(fā)表于 01-28 17:37 ?3594次閱讀
    RM新时代网站-首页