基于Arduino IDE开发的ESP8266(ESP-12F)项目4 ——中断及高级输入输出
?本次寫這篇文章是自己做一下學(xué)習(xí)記錄,如有錯(cuò)誤,還請大家斧正!!!
日后及時(shí)修正!感謝支持!
?歡迎大家的關(guān)注????????點(diǎn)贊? ? ? ? 收藏? ? ? ? 留言
目錄
前言
? ? ? ? 一、新建工程
? ? ? ? 二、項(xiàng)目函數(shù)介紹? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? 三、代碼編寫
? ? ? ? 四、編譯、燒錄、運(yùn)行
結(jié)束語
前言
? ? ? ? 中斷是每一位單片機(jī)開發(fā)者比較實(shí)用的一個(gè)基本外設(shè)、無論你是學(xué)習(xí)51單片機(jī)還是STM32等,都會(huì)接觸到這個(gè)項(xiàng)目。可以說中斷的合理使用可以讓你的程序執(zhí)行起來有意想不到的效果。這里除了中斷,還會(huì)介紹兩個(gè)高級的輸入輸出函數(shù)。
?一、新建工程
? ? ? ? 首先打開Arduino IDE,點(diǎn)擊 文件——> 點(diǎn)擊新建,就會(huì)生成一個(gè)新的工程模板了。 (還可以點(diǎn)任務(wù)欄中“折了一角的書頁”快速新建)。
?然后給項(xiàng)目重命名,然后再保存。
?這樣一個(gè)新的工程就建好了。
二、項(xiàng)目函數(shù)介紹
1. 中斷函數(shù)
? ? ? ? 無論什么單片機(jī)都具備中斷功能,這款單片機(jī)也不例外,接下來就帶大家接觸它的中斷服務(wù)函數(shù)。
? ? ? ? 這里我就來解釋以下這個(gè)函數(shù)說明一下它的功能及用途:
? (1)attachInterrupt(pin, ISR, mode)函數(shù)
| 響應(yīng)中斷的處理程序——中斷函數(shù),當(dāng)中斷觸發(fā)后,ESP8266便會(huì)運(yùn)行這個(gè)函數(shù)。 |
| 對中斷引腳進(jìn)行初始化配置,以開啟ESP8266的外部中斷功能 |
| pin | 指定引腳編號的配置 |
| value | 中斷函數(shù)名 |
| mode | 中斷模式。有以下兩種常用模式:LOW:低電平觸發(fā);HIGH:高電平觸發(fā); |
? (2)detachInterrupt(pin)函數(shù)
| 如果你不需要使用外部中斷了,你可以用中斷分離函數(shù)detachInterrupt() 來關(guān)閉中斷功能。 |
| 需要禁用中斷的引腳。 |
2. 高級輸入輸出函數(shù)? ?? ? ?
(1)tone()函數(shù)
| 主要用于ESP8266連接蜂鳴器或揚(yáng)聲器發(fā)聲。 |
| 可以讓指定引腳產(chǎn)生一個(gè)占空比為50%的指定頻率的方波。 |
| pin | 需要輸出方波的引腳 |
| frequency | 輸出的頻率,unsigned int型 |
| duration | 方波持續(xù)的時(shí)間,單位毫秒。如果沒有該參數(shù),ESP8266將持續(xù)發(fā)出設(shè)定的音調(diào),直到你改變發(fā)聲頻率。 |
(2)noTone(pin)函數(shù)
| 停止指定引腳上的方波輸出。 |
| 需要停止方波輸出的引腳 |
(3)pulseIn()函數(shù)
? ? ? ?檢測指定引腳上的脈沖信號寬度。
說明:例如當(dāng)要檢測高電平脈沖時(shí),pulseIn() 會(huì)等待指定引腳輸入的電平變高,當(dāng)變高后開始記時(shí),直到輸入電平變低,停止計(jì)時(shí)。pulseln() 函數(shù)會(huì)返回這個(gè)脈沖信號持續(xù)的時(shí)間,即這個(gè)脈沖的寬度。函數(shù)還可以設(shè)定超時(shí)時(shí)間。如果超過設(shè)定時(shí)間,仍未檢測到脈沖,則會(huì)退出pulseIn()函數(shù)并返回0。當(dāng)沒有設(shè)定超時(shí)時(shí)間時(shí),pulseIn() 會(huì)默認(rèn)1秒鐘的超時(shí)時(shí)間。
pulseIn(pin, value) //或 pulseIn(pin, value, timeout)| pin | 需要讀取脈沖的引腳 |
| value | 需要讀取的脈沖類型,HIGH或LOW |
| timeout | 超時(shí)時(shí)間,單位微秒,數(shù)據(jù)類型為無符號長整型 |
| 返回脈沖寬度,單位微秒,數(shù)據(jù)類型為無符號長整型。如果在指定時(shí)間內(nèi)沒有檢測到脈沖,則返回0。 |
?三、代碼編寫
示例:用中斷控制下的按鍵點(diǎn)亮LED燈
????????示例代碼如下:
void setup() {// put your setup code here, to run once:pinMode(2,OUTPUT);pinMode(5,INPUT); }void LED_On(void) {digitalWrite(2,LOW); }//void LED_Off(void) //{ // digitalWrite(2,HIGH);detachInterrupt(5); //}void loop() {// put your main code here, to run repeatedly: // if(digitalRead(5)==0) // {attachInterrupt(5,LED_On,LOW);detachInterrupt(5); // } // else // LED_Off(); }?四、編譯、燒錄、運(yùn)行
? ? ? ? 在我前一篇博文就介紹了如何編譯、燒錄,這里就不再過多贅述了,還望諒解!
應(yīng)視頻的插入不便,這里就用圖片代替,抱歉;其功能可以一目了然,當(dāng)按鍵按下觸發(fā)中斷LED燈就被點(diǎn)亮了。
結(jié)束語
? ? ? ? 關(guān)于此次基于Arduino IDE開發(fā)的ESP8266(ESP-12F)項(xiàng)目4?——中斷及高級輸入輸出項(xiàng)目的介紹就講到這里了,此次教程的重點(diǎn)在于中斷的使用,關(guān)于高級輸入輸出函數(shù)我給出鏈接供大家學(xué)習(xí)。調(diào)聲函數(shù) (arduino.cn);pulseIn() (arduino.cn)。如果什么問題請?jiān)僭u論區(qū)留言。
? ? ? ? 接下來會(huì)陸陸續(xù)續(xù)發(fā)布一些其他的教程,敬請期待!感謝大家的支持!如有覺得這篇文章對你有所幫助的,還請點(diǎn)贊、收藏吧!
總結(jié)
以上是生活随笔為你收集整理的基于Arduino IDE开发的ESP8266(ESP-12F)项目4 ——中断及高级输入输出的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 有效发布促成高效软文营销 | 媒介启航
- 下一篇: TPA3255 classD 音频功放快