日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

基于Arduino IDE开发的ESP8266(ESP-12F)项目4 ——中断及高级输入输出

發(fā)布時(shí)間:2024/3/12 编程问答 67 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于Arduino IDE开发的ESP8266(ESP-12F)项目4 ——中断及高级输入输出 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?本次寫這篇文章是自己做一下學(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的外部中斷功能
attachInterrupt(pin, ISR, mode) 參數(shù)說明
pin指定引腳編號的配置
value中斷函數(shù)名
mode中斷模式。有以下兩種常用模式:LOW:低電平觸發(fā);HIGH:高電平觸發(fā);

? (2)detachInterrupt(pin)函數(shù)

功能參數(shù)

如果你不需要使用外部中斷了,你可以用中斷分離函數(shù)detachInterrupt() 來關(guān)閉中斷功能。

需要禁用中斷的引腳。

2. 高級輸入輸出函數(shù)? ?? ? ?

(1)tone()函數(shù)

功能作用
主要用于ESP8266連接蜂鳴器或揚(yáng)聲器發(fā)聲。
可以讓指定引腳產(chǎn)生一個(gè)占空比為50%的指定頻率的方波。
tone(pin, frequency) //或 tone(pin, frequency, duration) 參數(shù)說明
pin需要輸出方波的引腳
frequency輸出的頻率,unsigned int型
duration方波持續(xù)的時(shí)間,單位毫秒。如果沒有該參數(shù),ESP8266將持續(xù)發(fā)出設(shè)定的音調(diào),直到你改變發(fā)聲頻率。

(2)noTone(pin)函數(shù)

功能參數(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) 參數(shù)說明
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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。