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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

1.Arduino入门项目1-超声波测距仪(附项目源码、库文件、电路图、材料清单等资料)

發布時間:2024/3/7 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 1.Arduino入门项目1-超声波测距仪(附项目源码、库文件、电路图、材料清单等资料) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.Arduino入門項目1-超聲波測距儀

(項目源碼、庫文件、電路圖、材料清單等可在文末獲取)

設計者:STCode(公眾號同名)

后臺回復:入門項目1

獲取完整資料

1.Arduino入門項目1-超聲波測距儀(附項目源碼、庫文件、電路圖、材料清單等資料)

①項目描述


本項目使用Arduino、超聲波傳感器、lcd1602液晶顯示屏等器件,實現超聲波傳感器檢測距離,通過Arduino數據分析和處理后,將距離數值顯示到lcd1602液晶顯示屏上。

②元件介紹


①HC-SR04超聲波傳感器

模塊描述:

? 本模塊性能穩定,測度距離精確。能和國外的SRF05,SRF02等超聲波測距模塊相媲美。模塊高精度,盲區(2cm)超近,采用IO觸發測距,給至少10us的高電平信號。模塊自動發送8個40KHz的方波,自動檢測是否有信號返回;有信號返回,通過IO輸出一高電平,高電平持續的時間就是超聲波從發射到返回的時間。距離=(高電平時間X聲速(340m/s))/2。

技術參數:
  • 使用電壓:DC5V

  • 靜態電流:小于2mA

  • 電平輸出:高5V

  • 電平輸出:底0V

  • 感應角度:不大于15度

  • 探測距離:2cm-450cm

作用:

該模塊在本項目中的作用為進行測距。

②lcd1602液晶顯示器

模塊描述:
  • 標準版:LCD1602字符液晶板,主板采用全新優質 2 行 16 個字符液晶,1602液晶在應用中非常廣泛,最初的1602液晶使用的是HD44780控制器,現在各個廠家的1602模塊基本上都是采用了與之兼容的IC,所以特性上基本都是一致的。
  • IIC版:由于Arduino的I/O口數量有限,如果直接用Arduino的I/O口直接驅動LCD1602,會占用較多的I/O口資源,也不利于連接更多的其他設備。IIC LCD1602轉接板可以大大減少需要使用的IO接口,原來的1602屏需要7個IO口才能驅動起來,這個模塊可以幫你節省5個IO口。對于 Arduino初學者來說,不必為繁瑣復雜液晶驅動電路連線而頭疼了,只需兩根線就可以實現數據顯示,還可以與其它IIC設備連接,可輕松實現數據的記錄顯示。
技術參數:
  • 供電電壓:+5V
  • 支持I2C協議
  • 具有背光燈,和對比度調節電位器
  • 4線輸出更簡單
  • 設備地址:0x27 或 0x3F或其他
作用:

本項目使用的為IIC版的lcd1602模塊,原因為IIC方式節省引腳,接線比較方便。該模塊在本項目中的作用為進行距離數值的顯示。

③電路連接



HC-SR04Arduino
VCC+5V
GNDGND
Echo3
Trig2
LCD1602Arduino
VCC+5V
GNDGND
SDAA4
SCLA5

④源代碼


#include <Wire.h> //引入庫文件 #include <LiquidCrystal_I2C.h>LiquidCrystal_I2C lcd(0x27,16,2); //定義lcd對象 int TrigPin = 2; //定義超聲波傳感器引腳 int EchoPin = 3; float distance; //定義距離變量 void setup() {Serial.begin(9600); //開啟串口lcd.init(); //初始化lcdlcd.backlight(); //開啟lcd背光pinMode(TrigPin, OUTPUT); //設置超聲波傳感器引腳模式pinMode(EchoPin, INPUT);lcd.setCursor(0,0); //設置光標位置lcd.print("Distance test"); //顯示內容 } void loop() {get_dis(); //獲取距離函數lcd_display(); //lcd顯示函數delay(500); //延時 }void get_dis() //獲取距離子函數 {digitalWrite(TrigPin, LOW);delayMicroseconds(2);digitalWrite(TrigPin, HIGH);delayMicroseconds(10);digitalWrite(TrigPin, LOW);distance = pulseIn(EchoPin, HIGH) / 58.0; Serial.print(distance);Serial.println("cm"); }void lcd_display() //lcd顯示子函數 {int dis = int(distance);lcd.setCursor(0,1);if(dis >= 0 && dis < 1000){lcd.print("Dis:");lcd.print(dis);}if(dis < 100) lcd.print(' ');lcd.setCursor(8,1);lcd.print("cm"); }
關鍵代碼解釋:
LiquidCrystal_I2C lcd(0x27,16,2); //定義lcd對象

該行代碼定義了lcd對象,其中0x27為該lcd1602模塊的IIC地址,不同商家購買的lcd1602,其地址可能會有所不同,大部分lcd1602的IIC地址為0x27或者0x3F,可以兩個地址都進行嘗試,如果還是不能顯示的話可以咨詢商家;代碼中的16表示一行有16個位,2表示一共有兩行。(還有其他型號的lcd,其顯示的行數和列數可以不相同,但是能用同一個庫文件,比如lcd2004A等。)

distance = pulseIn(EchoPin, HIGH) / 58.0;

將距離算成厘米,聲音的速度340m/s或29us/cm,脈沖傳播出來再折返回來,所以所求對象的距離行程為(高電平時間)/29/2,即/58.

if(dis >= 0 && dis < 1000){lcd.print("Dis:");lcd.print(dis);}

因為在測距的時候,偶爾會出現測出大于1000cm的情況,正常情況下,HC-SR04的測距在200cm以內,所以大于三位數的數值肯定是不正常的,因此在此做一個限制,在0-1000數值以內的值才會進行顯示。

if(dis < 100) lcd.print(' ');

在顯示大于三位數的距離數值時,占用了lcd1602的三個位,因此三個位上都有數據,但是當距離變為兩位數時,由于在代碼中沒有編寫清屏的語句,因此在顯示了兩位數時,第三位會仍然顯示之前顯示的數值,對測距數值形成一定的干擾,因此在這里,當測距為兩位數時,在后邊顯示一個’ ',即顯示一個空格,這樣就可以覆蓋掉之前顯示三位數時的個位數數值。

更多創意作品及源碼獲取歡迎關注公眾號:STCode

后臺回復:入門項目1

總結

以上是生活随笔為你收集整理的1.Arduino入门项目1-超声波测距仪(附项目源码、库文件、电路图、材料清单等资料)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。