相關(guān)推薦
您可能對(duì)下面課程感興趣
Arduino視頻教程基礎(chǔ)篇

75小節(jié)已有138544人學(xué)過(guò)

Arduino教程——編寫(xiě)Arduino類(lèi)庫(kù)(3)
發(fā)布時(shí)間:2022-03-11 10:01 [ 我要自學(xué)網(wǎng)原創(chuàng) ] 發(fā)布人: 小劉2175 閱讀: 1944
關(guān)鍵字高亮
一個(gè)SR04超聲波類(lèi)庫(kù)編寫(xiě)完成了,但它還不是一個(gè)完美的Arduino類(lèi)庫(kù),因?yàn)樗麤](méi)有一個(gè)可以讓Arduino IDE識(shí)別并高亮關(guān)鍵字的keywords.txt文件,我們?cè)俳⒁粋(gè)keywords.txt文件,并鍵入以下代碼:
[mw_shl_code=cpp,true]SR04   KEYWORD1
GetDistance   KEYWORD2[/mw_shl_code]

需要注意的是“SR04   KEYWORD1”及“GetDistance   KEYWORD2”之間的空格,應(yīng)由鍵盤(pán)“Tab”鍵輸入。
在Arduino IDE的關(guān)鍵字高亮中,會(huì)識(shí)別KEYWORD1為數(shù)據(jù)類(lèi)型高亮方式,KEYWORD2為函數(shù)高亮方式。
有了keywords.txt,在Arduino IDE里使用該類(lèi)庫(kù),你就能看到代碼高亮效果了。
一個(gè)完整的Arduino類(lèi)庫(kù)就建立好了。

使用該類(lèi)庫(kù),你需要在Arduino IDE安裝目錄下的libraries文件夾中新建一個(gè)名為SR04的文件夾,并將SR04.h、SR04.cpp、keywords.txt三個(gè)文件放入該文件夾中(如圖4-5)。

圖4-5 一個(gè)完整的Arduino庫(kù)




建立示例程序
為了方便其他用戶(hù)學(xué)習(xí)和使用你編寫(xiě)的類(lèi)庫(kù),你還可以在SR04文件夾中新建一個(gè)examples文件夾,并放入你提供的示例程序,方便其他使用者學(xué)習(xí)和使用這個(gè)類(lèi)庫(kù)。這里,我在examples文件夾中新建了一個(gè)SR04_Example文件夾,并放入了一個(gè)SR04_Example.ino文件(如圖4-6)。需注意的是ino文件所在文件夾需要與該ino文件同名。

圖4-6 添加示例程序


SR04_Example.ino完整程序代碼如下:
[mw_shl_code=cpp,true]#include <SR04.h>

SR04 ultrasonic = SR04(2,3);
void setup()
{
  Serial.begin(9600);
}
void loop()
{
  float distance = ultrasonic.GetDistance();
  Serial.print(distance);
  Serial.print("cm");
  Serial.println();
}[/mw_shl_code]

至此,一個(gè)完整的Arduino類(lèi)庫(kù)就建立完成了,重啟Arduino IDE后,在Arduino IDE菜單>文件>示例 中可以找到該示例程序。編譯并下載示例程序到你的Arduino控制器,驗(yàn)證你的類(lèi)庫(kù)是否還需要修改。



類(lèi)庫(kù)優(yōu)化與發(fā)布

為了方便理解和學(xué)習(xí)Arduino類(lèi)庫(kù)的編寫(xiě)方法,筆者在教學(xué)中將庫(kù)進(jìn)行了一定簡(jiǎn)化。你可能會(huì)在使用過(guò)程中遇到一些檢測(cè)出錯(cuò)的情況,例如檢測(cè)到的距離過(guò)大或?yàn)?等。你可以對(duì)這個(gè)庫(kù)進(jìn)行更多的優(yōu)化,使之達(dá)到更好的檢測(cè)效果。

這里給出三種優(yōu)化思路,大家可以自己嘗試優(yōu)化這個(gè)類(lèi)庫(kù):
1.當(dāng)檢測(cè)到的距離超出了SR04超聲波模塊可檢測(cè)的范圍時(shí)(3cm-450cm),輸出錯(cuò)誤信息或者重新檢測(cè);
2.每次檢測(cè)時(shí),檢測(cè)兩次或者多次,將得到的值做比較,如果偏差較大,則認(rèn)為是檢測(cè)出錯(cuò),并放棄檢測(cè)結(jié)果,重新檢測(cè)距離;
3.使用pulseIn(pin, value, timeout) 取代pulseIn(pin, value) 檢測(cè)脈沖寬度,通過(guò)限定檢測(cè)脈沖超時(shí)時(shí)間來(lái)限定超聲波傳感器的檢測(cè)距離。

Arduino視頻教程基礎(chǔ)篇
我要自學(xué)網(wǎng)商城 ¥40 元
進(jìn)入購(gòu)買(mǎi)
文章評(píng)論
0 條評(píng)論 按熱度排序 按時(shí)間排序 /350
添加表情
遵守中華人民共和國(guó)的各項(xiàng)道德法規(guī),
承擔(dān)因您的行為而導(dǎo)致的法律責(zé)任,
本站有權(quán)保留或刪除有爭(zhēng)議評(píng)論。
參與本評(píng)論即表明您已經(jīng)閱讀并接受
上述條款。
V
特惠充值
聯(lián)系客服
APP下載
官方微信
返回頂部
相關(guān)推薦
您可能對(duì)下面課程感興趣
Arduino視頻教程基礎(chǔ)篇

75小節(jié)已有138544人學(xué)過(guò)

分類(lèi)選擇:
電腦辦公 平面設(shè)計(jì) 室內(nèi)設(shè)計(jì) 室外設(shè)計(jì) 機(jī)械設(shè)計(jì) 工業(yè)自動(dòng)化 影視動(dòng)畫(huà) 程序開(kāi)發(fā) 網(wǎng)頁(yè)設(shè)計(jì) 會(huì)計(jì)課程 興趣成長(zhǎng) AIGC