色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

使用Arduino中斷的教程

科技觀察員 ? 來源:circuitdigest ? 作者:Pramoth Thangavel ? 2022-09-09 14:54 ? 次閱讀

考慮一輛快速行駛的汽車,如果它突然被相反方向的另一輛車撞到,首先發生的事情是,汽車中的加速度計傳感器感應到突然減速并觸發微控制器的外部中斷車。然后基于該中斷,微控制器產生電信號以立即展開安全氣囊。汽車中的微控制器同時監控許多事情,例如感應汽車的速度、檢查其他傳感器、控制空調溫度等。那么是什么讓安全氣囊在幾秒鐘內突然打開?答案是中斷,這里使用了一個具有最高優先級的中斷信號。

中斷的另一個簡單示例是對“觸摸”感具有最高優先級的觸摸屏手機。幾乎每個電子設備都有某種中斷來“中斷”常規過程并在特定事件上執行一些更高優先級的事情。服務中斷后恢復常規進程。

因此從技術上講,中斷是一種機制,通過該機制,I/O 或指令可以暫停處理器的正常執行并像它具有更高的優先級一樣讓自己得到服務。例如,執行正常執行的處理器可能會被某個傳感器中斷以執行 ISR(中斷服務程序)中存在的特定進程。執行完 ISR 處理器可以再次恢復正常執行。

中斷類型

有兩種類型的中斷:

硬件中斷:當外部事件發生時發生,例如外部中斷引腳將其狀態從 LOW 變為 HIGH 或 HIGH 變為 LOW。

軟件中斷:根據軟件的指令發生。例如定時器中斷是軟件中斷。

Arduino中的中斷

現在我們將了解如何在 Arduino Board中使用中斷。它有兩種類型的中斷:

外部中斷

引腳變化中斷

外部中斷:

這些中斷由硬件解釋并且非常快。這些中斷可以設置為在 RISING 或 FALLING 或 LOW 電平的事件上觸發。

pYYBAGMa4r2AOHyoAAAKOz08xkQ989.png

引腳變化中斷:

Arduinos 可以通過使用引腳更改中斷來啟用更多的中斷引腳。在基于 ATmega168/328 的 Arduino 板上,任何引腳或所有 20 個信號引腳都可以用作中斷引腳。它們也可以使用上升沿或下降沿觸發。

在 Arduino 中使用中斷

為了在 Arduino 中使用中斷,需要了解以下概念。

中斷服務程序 (ISR)

中斷服務程序或中斷處理程序是一個包含少量指令的事件。當發生外部中斷時,處理器首先執行 ISR 中存在的這些代碼,然后返回到它離開正常執行的狀態。

ISR在 Arduino 中具有以下語法:

attachInterrupt(digitalPinToInterrupt(pin),ISR,模式);

digitalPinToInterrupt(pin):在 Arduino Uno、NANO 中,用于中斷的引腳為 2,3 和 mega 2,3,18,19,20,21。在此處指定用于外部中斷的輸入引腳。

ISR:外部中斷完成時調用的函數。

模式:要觸發的轉換類型,例如下降、上升等。

RISING:當引腳從低電平變為高電平時觸發中斷。

FALLING:當引腳從 HIGH 變為 LOW 時觸發中斷。

CHANGE:當引腳從 LOW 變為 HIGH 或 HIGH 變為 LOW 時觸發中斷(即當引腳狀態發生變化時)。

使用中斷時的一些條件

中斷服務程序功能 (ISR) 必須盡可能短。

Delay() 函數在 ISR 中不起作用,應避免使用。

在這個Arduino 中斷教程中,一個數字從 0 開始遞增,兩個按鈕用于觸發中斷,每個按鈕都連接到 D2 和 D3。LED 用于指示中斷。如果按下一個按鈕,LED 亮起,顯示屏顯示中斷 2 并熄滅,當按下另一個按鈕時,LED 熄滅,顯示屏顯示中斷 1 并熄滅。

所需組件

Arduino 板(在本教程中使用 Arduino NANO)

按鈕 - 2

LED - 1

電阻器 (10K) - 2

液晶顯示器 (16x2) - 1

面包板

連接電線

電路原理

poYBAGMa4reASqY7AAF00bhuE0k475.png

Arduino Nano 和 16x2 LCD 顯示器之間的電路連接:

poYBAGMa4rSARZalAAAey2RA2Nk785.png

兩個按鈕在引腳 D2 和 D3 處連接到 Arduino Nano。它們用于使用兩個外部中斷,一個用于打開 LED,另一個用于關閉 LED。每個按鈕都有一個接地的 10k下拉電阻。因此,按下按鈕時為邏輯高(1),未按下時為邏輯低(0)。下拉電阻是強制性的,否則輸入引腳 D2 和 D3 處會有浮動值。

LED還用于指示已觸發中斷或已按下按鈕。

Arduino中斷編程

在本教程中,一個數字從 0 開始遞增,該數字在連接到 Arduino Nano 的 (16x2) LCD 中連續顯示,每當按下左按鈕(中斷引腳 D3)時,LED 亮起并顯示 Interrupt2,當右按鈕時(中斷引腳 D2)被按下,LED 熄滅,顯示屏顯示 Interrupt1。

本教程末尾提供了帶有工作視頻的完整代碼。

1. 首先包含 LCD 顯示器的頭文件,然后定義用于連接 Arduino Nano 的 LCD 引腳。

#include                         
LiquidCrystal lcd (7,8,9,10,11,12); //定義LCD顯示引腳RS、E、D4、D5、D6、D7

2.在 void setup()函數中,首先在 LCD 顯示屏上顯示一些介紹信息。在此處了解有關將LCD 與 Arduino 連接的更多信息。

  lcd.開始(16,2);                            
  lcd.setCursor(0,0); 
  lcd.print("電路文摘");                                   
  lcd.setCursor(0,1); 
  lcd.print("ArduinoInterrupt"); 
  延遲(3000);                                                    
  lcd.clear();    

3. 然后在同一個 void setup() 函數中必須指定輸入和輸出引腳。引腳 D13 連接到 LED 的陽極,因此該引腳必須定義為輸出。

pinMode(13,輸出);

4. 現在編程中最重要的部分是attachInterrupt()函數,它也包含在void setup()中。

attachInterrupt(digitalPinToInterrupt(2),buttonPressed1,RISING);
attachInterrupt(digitalPinToInterrupt(3),buttonPressed2,RISING);

這里指定引腳 2 為外部中斷,當 D2 引腳有 RISING(低到高)時調用buttonPressed1函數。并且引腳 3 也用于外部中斷,當 D3 引腳有 RISING 時調用 buttonPressed2 函數。

5.在 void loop() 內部,一個數字 (i) 從零遞增并打印在 LCD(16x2) 上。

lcd.clear();                                                  
lcd.print("計數器:");                                          
lcd.print(i);                                                 
++i;                                                           
延遲(1000);

在同一個 void loop() 中,digitalWrite()用于連接 LED 陽極的引腳 D13。根據可變輸出中的值LED 將打開或關閉

數字寫入(13,輸出);

6. 最重要的部分是根據attachInterrupt()函數中使用的名稱創建一個中斷處理函數。

由于使用了兩個中斷引腳 2 和 3,因此需要兩個 ISR。在此編程中,使用了以下 ISR

buttonPressed1():

無效 buttonPressed1()           
{                   
   輸出 = 低;               
   lcd.setCursor(0,1);                                         
   lcd.print("中斷 1"); 
}

當按下引腳 D2 上的按鈕時(上升沿)執行此功能。此功能將輸出狀態更改為低電平,導致 LED 關閉并在 LCD 顯示屏上打印“interrupt1”。

buttonPressed2():

無效按鈕Pressed2()          
{                   
   輸出=高;              
   lcd.setCursor(0,1);                                         
   lcd.print("中斷2");
}

當按下引腳 D3 上的按鈕時執行此功能。此功能將輸出狀態更改為高電平,導致 LED 亮起并在 LCD 顯示屏上打印“interrupt2”。

Arduino 中斷演示

1. 按下左側的PUSH BUTTON 時,LED 亮起,LCD 顯示Interrupt2。

pYYBAGMa4qqAZdDMAAZrNPFnJ0o465.png

2.當按下右側的PUSH BUTTON時,LED熄滅,LCD顯示Interrupt1

poYBAGMa4qaAFr2GAAX7AEwioqM892.png

這就是中斷在正常執行之間觸發任何重要任務的有用方式。
//使用 Arduino 中斷

//電路文摘


#include //包括lcd顯示庫

LiquidCrystal lcd(7,8,9,10,11,12); // 定義 LCD 顯示引腳 RS,E,D4,D5,D6,D7



volatile int 輸出 = 低;

詮釋 i = 0;


無效設置()


{

lcd.begin(16,2); // 將 LCD 設置為 16x2 類型

lcd.setCursor(0,0);

lcd.print("電路文摘");

lcd.setCursor(0,1);

lcd.print("ArduinoInterrupt");

延遲(3000);

lcd.clear();

pinMode(13,輸出);



attachInterrupt(digitalPinToInterrupt(2),buttonPressed1,RISING);// 用于在上升沿(從低到高)的 pin2 處創建外部中斷的函數

attachInterrupt(digitalPinToInterrupt(3),buttonPressed2,RISING); // 用于在上升沿(從低到高)的 pin3 上創建外部中斷的函數



}


無效循環()

{

lcd.clear();

lcd.print("計數器:");

lcd.print(i);

++i;

延遲(1000);

數字寫入(13,輸出);//根據輸出值打開或關閉 LED

}


void buttonPressed1() //按下 pinD2 上的按鈕時執行 ISR 函數

{

output = LOW; //將輸出值更改為低

lcd.setCursor(0,1);

lcd.print("中斷 1");

}


void buttonPressed2() //按下 pinD3 上的按鈕時執行 ISR 函數

{

output = HIGH; //將輸出值更改為

高 lcd.setCursor(0,1);

lcd.print("中斷2");

}

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 中斷
    +關注

    關注

    5

    文章

    898

    瀏覽量

    41474
  • Arduino
    +關注

    關注

    188

    文章

    6469

    瀏覽量

    186963
  • 中斷編程
    +關注

    關注

    0

    文章

    5

    瀏覽量

    7388
收藏 人收藏

    評論

    相關推薦

    使用Arduino中斷功能檢測霍爾傳感器附近磁鐵的教程

    在本教程中,我們將使用 Arduino中斷功能來檢測霍爾傳感器附近的磁鐵并發光 LED。大多數情況下,霍爾傳感器將僅與中斷一起使用,因為它們的應用需要高讀取和執行速度,因此讓我們在本教程中也使用
    的頭像 發表于 11-25 16:22 ?5006次閱讀
    使用<b class='flag-5'>Arduino</b><b class='flag-5'>中斷</b>功能檢測霍爾傳感器附近磁鐵的教程

    #硬聲創作季 單片機技術:Arduino中斷

    單片機
    Mr_haohao
    發布于 :2022年10月30日 18:56:52

    Arduino中斷#單片機

    中斷Arduino
    學習硬聲知識
    發布于 :2022年11月06日 00:08:02

    使用霍爾效應傳感器檢測磁鐵的存在并制作速度計,防盜報警器等等!

    于檢測傳感器是否在磁鐵附近。Arduino可通過其中斷引腳檢測此電壓變化,并確定磁鐵是否靠近傳感器。Arduino霍爾效應傳感器的基本工作如下圖所示。Arduino霍爾效應傳感器工作
    發表于 12-04 15:35

    Arduino中斷學習資料分享

    提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔文章目錄Arduino中斷一、外部中斷學習1、Arduino 開發板的外部中斷
    發表于 02-15 06:38

    Arduino外部中斷的相關資料分享

    外部中斷外部中斷是由控制器設備發起的中斷請求。停止再在執行的內容去執行中斷函數中的內容Arduino型號int0int1int2int3in
    發表于 02-15 06:34

    arduino有哪幾種觸發方式

    一、首先是要了解一下arduino中斷模式有啥?哪些可以觸發中斷?二、接著是,了解不同芯片型號的arduino,可以接收外部中斷的,有哪些引
    發表于 02-15 06:17

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

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

    如何使用Arduino中斷

    警告:對于按鈕,使用數字引腳2非常重要,因為中斷僅在某些引腳上起作用!
    的頭像 發表于 10-24 14:35 ?1w次閱讀
    如何使用<b class='flag-5'>Arduino</b><b class='flag-5'>中斷</b>

    Arduino的實驗例程之串口中斷的程序免費下載

    本文檔的主要內容詳細介紹的是Arduino的實驗例程之串口中斷的程序免費下載。
    發表于 02-25 17:39 ?13次下載

    arduino 中斷 和millis語句

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

    Arduino中斷學習

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

    Arduino 外部中斷

    外部中斷外部中斷是由控制器設備發起的中斷請求。停止再在執行的內容去執行中斷函數中的內容Arduino型號int0int1int2int3in
    發表于 12-16 16:51 ?11次下載
    <b class='flag-5'>Arduino</b> 外部<b class='flag-5'>中斷</b>

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

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

    ARDUINO微控制器外部中斷處理

    電子發燒友網站提供《ARDUINO微控制器外部中斷處理.zip》資料免費下載
    發表于 10-27 11:50 ?2次下載
    <b class='flag-5'>ARDUINO</b>微控制器外部<b class='flag-5'>中斷</b>處理
    主站蜘蛛池模板: 蜜桃AV色欲A片精品一区| caoporn 超碰免费视频| jiz中国zz| 国产精品婷婷久青青原| 久久天天躁狠狠躁夜夜呲| 日本高清免费看| 啊叫大点声欠CAO的SAO贷| 邻居的阿2中文字版电影| 蜜臀AV熟女人妻中文字幕| 精品久久久99大香线蕉| 欧美黄色第一页| 亚洲伊人久久精品| 处 女 开 破小说| 他揉捏她两乳不停呻吟口述| 国语92电影网午夜福利| 5G在线观看免费年龄确认| 国产互换后人妻的疯狂VIDEO| 青青青手机视频| xx顶级欧美熟妞xxhd| 年轻的老师5理伦片| 99re久久精品在线播放| 蜜芽手机在线观看| 99免费在线观看视频| 女人夜夜春| www红色一片| 日韩精品一区二区亚洲AV观看| 成人小视频在线观看免费| 日日碰狠狠添天天爽| 动漫美女被吸奶| 十九禁啊啪射视频在线观看 | 国产乱对白精彩在线播放| 偷偷鲁青春草原视频| 国产精品内射久久久久欢欢| 香蕉视频国产精品| 新新电影理论中文字幕| 国产精品久久久久久人妻精品流| 四虎国产精品高清在线观看| 国产成人拍精品免费视频爱情岛| 无码免费视频AAAAAA片草莓| 国产午夜小视频| 一级毛片视频免费|