Arduino平臺軟硬件原理及使用——SR04超聲波傳感器的使用

文章目錄:
一、超聲波傳感器工作原理
二、SR04超聲波庫的使用
三、SR04超聲波傳感器在Arduino中的使用

一、超聲波傳感器工作原理

超聲波傳感器
如上圖所示:HCSR04超聲波傳感器擁有4個針腳,除了VCC接正極、GND接負極外,還有兩個引腳“Trig”及“Echo”;
其中“Trig”用于控制發射超聲波,“Echo”用于接收反射波。

超聲波原理
其工作原理如上圖:首先傳感器發射超聲波,并計時,當超聲波接觸到障礙物會被反射,當傳感器接收到反射波,計時結束,然后利用距離、速度、時間公示進行計算,得到傳感器到障礙物間的距離

二、SR04超聲波庫的使用

在使用SR04超聲波傳感器之前,需要先配置好庫文件
一般這種較基礎的庫文件,在下載Arduino軟件后會自動配置好,可以根據下圖所示檢驗是否有超聲波傳感器的庫:
在這里插入圖片描述
如果在示例文件中存在SR04超聲波傳感器的示例文件,則一般已配置好庫文件。
在這里插入圖片描述
如果未配置好庫文件,則可使用2.0以后版本的Arduino軟件直接搜索然后安裝;
若Arduino軟件版本較舊,則可參照Arduino平臺軟硬件原理及使用——開源庫的使用來進行配置安裝。
在這里插入圖片描述
由于不同的庫文件貢獻者所創建庫的差異性,可以通過按下【Alt/cmd鍵】+【點擊庫名稱】的方法來打開其頭文件

#pragma once
#include <Arduino.h>class HCSR04
{
public:HCSR04(int out, int echo);			//initialisation class HCSR04 (trig pin , echo pin)HCSR04(int out, int echo[], int n); //initialisation class HCSR04 (trig pin , echo pin)~HCSR04();							//destructorfloat dist() const;					//return curent distance of element 0float dist(int n) const;			//return curent distance of element nprivate:void init(int out, int echo[], int n); //for constructorint out;							   //out pinint *echo;							   //echo pin listint n;								   //number of el
};

如上代碼則為此庫文件的頭文件,其可使用的方法均位于public公有類里面。

三、SR04超聲波傳感器在Arduino中的使用

將SR04超聲波傳感器與Arduino進行連接,除了VCC及GND分別接正負極外;

“Trig”與數字端口D5連接
“Echo”與數字端口D4連接

如下圖所示:
在這里插入圖片描述
完成以下程序:

//此程序功能為將SR04超聲波傳感器測的的距離數值,通過串口進行輸出#include<HCSR04.h>  //導入超聲波SR04庫
HCSR04 ultrasonic(5,4);  //聲明一個對象,其名為ultrasonic(自定義的名稱)//4號為“Echo”,5號為“Trig”void setup()
{pinMode(4, INPUT);  //設置“Echo”接入的引腳為輸入pinMode(5, OUTPUT);  //設置“Trig”接入的引腳為輸出Serial.begin(9600);  //串口監視器初始化
}int distance;  //定義一個名為“distance”的變量,用于存放檢測的距離數值void loop()
{distance = ultrasonic.dist();  //調用了超聲波庫里的“dist()”方法,獲得檢測距離數值Serial.print(distance);  //輸出distance數值,且不換行Serial.println(" cm");  //緊接著輸出單位,且換行
}

將程序上傳之前先對以上程序的部分代碼塊進行解釋:
1.“HCSR04 ultrasonic(4, 5)”我們稱之為對象的實例化,即HCSR04為超聲波庫的名稱,在其后自定義一個名稱“ultrasonic”(即超聲波的英文,可自定義任意名稱),并且不同的實例化過程有不同的參數要輸入,比如HCSR04后需要加入“Trig”和“Echo”所接引腳的端口號(我們分別接到了D5和D4),從而在后述程序中,如果要調用HCSR04庫內的方法的話,僅需使用“ultrasonic.方法名()”,即可。

2.“distance = ultrasonic.dist()”這一代碼塊是調用了超聲波傳感器中獲取距離的方法“dist()”,與前面int定義的distance截然不同,int定義的變量可取任意名稱,僅為變量名,但“Distance()”為超聲波傳感器固定的方法。
接下來將上述程序上傳至Arduino板,并且打開串口監視器,觀測所測的數值是否準確。
在這里插入圖片描述
另外HCSR04型號的超聲波傳感器的測量范圍官方聲稱為2cm ~ 450cm,因此超出這個范圍的數值會不準確。
關于SR04超聲波傳感器的具體實例可參考文章——Arduino項目式編程教學第四章——超聲波測距

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/36690.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/36690.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/36690.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux線程互斥鎖

目錄 &#x1f6a9;看現象&#xff0c;說原因 &#x1f6a9;解決方案 &#x1f6a9;互斥鎖 &#x1f680;關于互斥鎖的理解 &#x1f680;關于原子性的理解 &#x1f680;如何理解加鎖和解鎖是原子的 &#x1f6a9;對互斥鎖的簡單封裝 引言 大家有任何疑問&#xff0c;可…

【Android面試八股文】如何實現Activity窗口快速變暗

文章目錄 方式一:修改 WindowManager.LayoutParams 的screenBrightness屬性動態調整窗口的亮度方式二:使用 `WindowManager.LayoutParams` 的 `alpha` 屬性結合 `ValueAnimator` 來實現窗口漸變變暗的效果方式三:使用遮罩層在Android中實現Activity窗口快速變暗有幾種方法,…

CCSP自考攻略+經驗總結

備考攻略 備考攻略準備階段通讀階段精度階段總復習階段刷題階段命運審判 寫到最后 備考攻略 趁著對ssp知識點的理解還在&#xff0c;開始ccsp的考證之路&#xff0c;文章結構還是按照cissp備考篇的結構梳理。本次備考和cissp的離職在家備考不同&#xff0c;ccsp是在職利用非工…

如何用亞馬遜合作伙伴網絡快速上線跨境電商

目前跨境電商已成為行業發展主流&#xff0c;如何快速、低成本打造品牌海外獨立站和智能客服營銷中心、構建全鏈路跨境電商體系是出海電商商家都會遇到的難題。亞馬遜云科技憑借與亞馬遜電商平臺易于集成的先天優勢成為首選的電商解決方案平臺。本文介紹了如何用亞馬遜云科技平…

Elasticsearch8.x聚合查詢全面指南:從理論到實戰

聚合查詢的概念 聚合查詢&#xff08;Aggregation Queries&#xff09;是Elasticsearch中用于數據匯總和分析的查詢類型。它不同于普通的查詢&#xff0c;而是用于執行各種聚合操作&#xff0c;如計數、求和、平均值、最小值、最大值、分組等。 聚合查詢的分類 分桶聚合&…

centos7 安裝單機MongoDB

centos7安裝單機 yum 安裝 1、配置yum源 vim /etc/yum.repos.d/mongodb.repo [mongodb-org-7.0] nameMongoDB Repository baseurlhttps://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/7.0/x86_64/ gpgcheck1 enabled1 gpgkeyhttps://www.mongodb.org/static/pgp…

【監控】3.配置 Grafana 以使用 Prometheus 數據源

1 訪問 Grafana 打開瀏覽器&#xff0c;訪問 http://localhost:3000&#xff08;默認端口&#xff09;。使用默認的用戶名和密碼 admin/admin 登錄。 2 添加 Prometheus 數據源 進入 Grafana 儀表板&#xff0c;點擊左側菜單中的“Configuration” -> “Data Sources”。…

未來已來,如何打造智慧養殖場?

近年來&#xff0c;國家出臺了一系列扶持政策&#xff0c;以促進養殖行業高質量發展&#xff0c;推動行業轉型升級。在國家政策和市場需求的雙重驅動下&#xff0c;養殖行業正迎來前所未有的發展機遇。智慧養殖以其高效、智能和可持續的特點&#xff0c;正逐步取代傳統養殖方式…

6.26.4.1 基于交叉視角變換的未配準醫學圖像多視角分析

1. 介紹 許多醫學成像任務使用來自多個視圖或模式的數據&#xff0c;但很難有效地將這些數據結合起來。雖然多模態圖像通常可以在神經網絡中作為多個輸入通道進行配準和處理&#xff0c;但來自不同視圖的圖像可能難以正確配準(例如&#xff0c;[2])。因此&#xff0c;大多數多視…

電影搜索筆記

1 字幕組 2 磁力搜索 2.1 磁力大全 http://7809.org/cldq.html

吳恩達2022機器學習專項課程C2W3:2.27 選修_數據傾斜

目錄 處理不平衡數據集1.分類需求描述2.計算精確率和召回率 權衡精確率和召喚率1.手動調整閾值2.F1分數 總結 處理不平衡數據集 1.分類需求描述 如果你在處理一個機器學習應用&#xff0c;其中正例和負例的比例&#xff08;用于解決分類問題&#xff09;非常不平衡&#xff0…

多域名微信公眾號獲取授權(前后端分離,后端獲取微信用戶openid)

1.通過后端站點http://b.cn 跳轉至前端鏈接 http://aa.cn/v1/demo/demo public function index(){$identinput(ident);$this->redirect(http://aa.cn/?ident.$ident);}2.前端http://aa.cn 再跳轉到后端 https://c.com(此域名綁定微信公眾號:需備案) onShow() {console.lo…

數據庫怎么同步

數據庫要怎么同步呢&#xff0c;有很多方法&#xff0c;看你用什么數據庫&#xff0c;如果是Sqlserver,你要數據庫同步&#xff0c;那么可以使用自帶的訂閱發布&#xff0c;訂閱發布應該是不錯的方法&#xff0c;但是我上次要配置雙向同步&#xff0c;它的對等發布好像沒部署成…

Ansible-綜合練習-生產案例

斌的招兒 網上教程大多都是官網模板化的教程和文檔&#xff0c;這里小斌用自己實際生產環境使用的例子給大家做一個詳解。涉及到一整套ansible的使用&#xff0c;對于roles的使用&#xff0c;也僅涉及到tasks和files目錄&#xff0c;方便大家快速上手并規范化管理。 0.環境配置…

想關掉一個qwidget是用deleteLater還是用close

在Qt中關閉一個QWidget可以選擇使用close()或者deleteLater()兩種方法&#xff0c;根據具體需求&#xff0c;兩者有不同的適用場景&#xff1a; close()方法&#xff1a; close()會觸發QWidget的closeEvent&#xff0c;也就是說&#xff0c;它會產生一個關閉事件&#xff0c;可…

聚星文社AI工具

聚星文社AI工具是一種基于人工智能技術開發的工具&#xff0c;旨在輔助作者和寫作人員提升創作效率和質量。 點擊下載 該工具可以提供多項功能&#xff0c;包括語法糾錯、智能推薦、文章自動摘要等。 通過使用聚星文社AI工具&#xff0c;用戶可以在寫作過程中得到即時的糾錯建…

memcached服務介紹

memcached 基礎概念安裝使用 基礎概念 Memcached 是一個高性能的分布式內存對象緩存系統&#xff0c;用于減少數據庫負載&#xff0c;加速動態 Web 應用。 Memcached 的基本概念 緩存&#xff1a;Memcached 的核心功能是緩存數據&#xff0c;它將經常訪問的數據存儲在內存中…

ECMAScript6介紹及環境搭建

這實際上說明&#xff0c;對象的解構賦值是下面形式的簡寫。 let { foo: foo, bar: bar } { foo: ‘aaa’, bar: ‘bbb’ }; 也就是說&#xff0c;對象的解構賦值的內部機制&#xff0c;是先找到同名屬性&#xff0c;然后再賦給對應的變量。真正被賦值的是后者&#xff0c;而…

數據結構_緒論

1.數據結構的研究內容 研究數據的特性和數據之間的關系 用計算機解決一個問題的步驟 1.具體問題抽象成數學模型 實質: 分析問題--->提取操作對象--->找出操作對象之間的關系(數據結構)--->用數學語言描述 操作對象對象之間的關系 2.設計算法 3.編程,調試,運行 …