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

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

Arduino教程——編寫Arduino類庫(3)
發(fā)布時間:2022-03-11 10:01 [ 我要自學(xué)網(wǎng)原創(chuàng) ] 發(fā)布人: 小劉2175 閱讀: 1943
關(guān)鍵字高亮
一個SR04超聲波類庫編寫完成了,但它還不是一個完美的Arduino類庫,因為他沒有一個可以讓Arduino IDE識別并高亮關(guān)鍵字的keywords.txt文件,我們再建立一個keywords.txt文件,并鍵入以下代碼:
[mw_shl_code=cpp,true]SR04   KEYWORD1
GetDistance   KEYWORD2[/mw_shl_code]

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

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

圖4-5 一個完整的Arduino庫




建立示例程序
為了方便其他用戶學(xué)習(xí)和使用你編寫的類庫,你還可以在SR04文件夾中新建一個examples文件夾,并放入你提供的示例程序,方便其他使用者學(xué)習(xí)和使用這個類庫。這里,我在examples文件夾中新建了一個SR04_Example文件夾,并放入了一個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]

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



類庫優(yōu)化與發(fā)布

為了方便理解和學(xué)習(xí)Arduino類庫的編寫方法,筆者在教學(xué)中將庫進行了一定簡化。你可能會在使用過程中遇到一些檢測出錯的情況,例如檢測到的距離過大或為0等。你可以對這個庫進行更多的優(yōu)化,使之達到更好的檢測效果。

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

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

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

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