樹莓派使用HC-SR04超聲波測距

来源:https://www.cnblogs.com/softlin/archive/2023/05/28/17437150.html
-Advertisement-
Play Games

### 超聲波模塊介紹 超聲波測距原理很簡單: 1、通過記錄發送超聲波的時間、記錄超聲波返回的時間,返回時間與發送時間相減得到超聲波的持續時間。 2、通過公式:(**超聲波持續時間** * **聲波速度**) / **2**就可以得出距離; ![image.png](https://img2023. ...


超聲波模塊介紹

  超聲波測距原理很簡單:
  1、通過記錄發送超聲波的時間、記錄超聲波返回的時間,返回時間與發送時間相減得到超聲波的持續時間。
  2、通過公式:(超聲波持續時間 * 聲波速度) / 2就可以得出距離;

image.png

  HC-SR04參數:
  工作電壓: 5V
  工作電流:15mA
  最短測量距離:3cm
  最長測量距離:4m
  角度15度
  Trig引腳輸入信號:10us TTL 脈衝
  Echo引腳輸出信號:5v脈衝信號

超聲波模塊接線與工作過程

接線:

  總共4引腳:2電源引腳(Vcc、GND)和2個控制引腳Trig、Echo;
  Vcc為5v供電
  Trig引腳用於接收樹莓派信號,可接所有GPIO口。
  Echo引腳用於發送測距結果給樹莓派,可接所有GPIO口,返回5v信號。

測距工作過程:

  1、樹莓派向Trig引腳發送持續10us的脈衝信號;
  2、HC-SR04發送超聲波,將Echo置位高電平,準備接收超聲波返回;
  3、HC-SR04收到超聲波返回把Echo置位低電平;

程式實現

  通過上面HC-SR04超聲波測距模塊使用過程,原理的分析,使用Python很容易就寫出了超聲波測距的Demo程式,具體實現如下:
  程式的關鍵點:
  1、獲取超聲波發送時的時間
  2、獲取超聲波返回時的時間
  3、把超聲波發送與返回的時間差帶入公式:(超聲波持續時間 * 聲波速度) / 2 即可得到距離

Trig_Pin = 14
Echo_Pin = 4

GPIO.setmode(GPIO.BCM)
#設備GPIO工作方式IN/OUT
GPIO.setup(Trig_Pin,GPIO.OUT,initial = GPIO.LOW)
GPIO.setup(Echo_Pin,GPIO.IN)

def ultrasonic():
    #發送高電平到Trig引腳
    GPIO.output(Trig_Pin,GPIO.HIGH)
    #持續10us 微秒
    time.sleep(0.00001)
    GPIO.output(Trig_Pin,GPIO.LOW)
    #記錄發送超聲波時刻,發送前Echo_Pin為低電平,當變為高電平是說明超聲波已發送
    while GPIO.input(Echo_Pin) == GPIO.LOW:
        pass
    t1 = time.time()

    #記錄收到返回超聲波時刻,當Echo_變為低電平時說明超聲波已經返回
    while GPIO.input(Echo_Pin) == GPIO.HIGH:
        pass
    t2 = time.time()

    #超聲波往返時間:t2-t1
    #聲波在空氣中傳播速度340m/s 記錄時間 t 來回 2
    #高電平時刻時間減去低電平時刻時間,得到超聲波傳播時間,單位轉換為釐米乘以100
    distance = (t2-t1) * 340 *100 /2
return distance

image.png


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • ## 實踐環境 Python 3.6.2 ## 什麼是協程 **協程**(Coroutine)一種電腦程式組件,該程式組件通過允許暫停和恢復任務,為非搶占式多任務生成子程式。**協程**也可以簡單理解為協作的程式,通過協同多任務處理實現併發的函數的變種(一種可以支持中斷的函數)。 下麵,我們通過日常 ...
  • ## HTTP 概述 HTTP 客戶程式必須先發出一個 HTTP 請求,然後才能接收到來自 HTTP 服器的響應,瀏覽器就是最常見的 HTTP 客戶程式。HTTP 客戶程式和 HTTP 伺服器分別由不同的軟體開發商提供,它們都可以用任意的編程語言編寫。HTTP 嚴格規定了 HTTP 請求和 HTTP ...
  • 訓練內容:2023江西省賽VP 賽後總結: 比賽過程: 做了簽到以後純純開始坐牢...... 策略失誤: I題被定位成簽到題也過了十四個人,但是後續沒有花更多的時間去看,一直在鑽“如何存儲圖上路徑”的牛角尖,沒有往“存在巧妙解法”這個角度思考。另外寫dfs的假解法的過程中發現對vector的基本刪除 ...
  • 操作系統 :CentOS 7.6_x64 FreeSWITCH版本 :1.10.9 日常開發過程中會遇到需要擴展FreeSWITCH對接其它系統的情況,這裡記錄下編寫FreeSWITCH自定義endpoint的過程。 一、模塊定義函數 使用FreeSWITCH自帶的框架來定義模塊函數,函數指針及參數 ...
  • # 1.初識字元串 字元串就是一系列字元。在python中,用引號括起來文本內容的都是字元串。 其語法格式為:‘文本內容’或者“文本內容” 我們發現其中的引號可以是單引號,也可以是雙引號。這樣的靈活性可以使我們進行引號之間的嵌套。 編寫程式如下所示: ![image](https://img2023 ...
  • # Rust Web 全棧開發之自建TCP、HTTP Server ## 課程簡介 ### 預備知識 - Rust 編程語言入門 - https://www.bilibili.com/video/BV1hp4y1k7SV ### 課程主要內容 - WebService - 伺服器端Web App - ...
  • 該模塊提供將二進位數據編碼為可列印ASCII字元並將這種編碼解碼回二進位數據的功能。它為[RFC 3548](https://tools.ietf.org/html/rfc3548.html)中指定的編碼提供編碼和解碼功能。定義了Base16、Base32和Base64演算法,以及事實上的標準Asci ...
  • # 關於STL容器的簡單總結 ## 1、結構體中重載運算符的示例 ``` //結構體小於符號的重載 struct buf { int a,b; bool operator queuea; //定義 a.push(x); //壓入 a.pop(); //彈出 a.size(); //取大小 a.fro ...
一周排行
    -Advertisement-
    Play Games
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...
  • 目錄前言PostgreSql安裝測試額外Nuget安裝Person.cs模擬運行Navicate連postgresql解決方案Garnet為什麼要選擇Garnet而不是RedisRedis不再開源Windows版的Redis是由微軟維護的Windows Redis版本老舊,後續可能不再更新Garne ...
  • C#TMS系統代碼-聯表報表學習 領導被裁了之後很快就有人上任了,幾乎是無縫銜接,很難讓我不想到這早就決定好了。我的職責沒有任何變化。感受下來這個系統封裝程度很高,我只要會調用方法就行。這個系統交付之後不會有太多問題,更多應該是做小需求,有大的開發任務應該也是第二期的事,嗯?怎麼感覺我變成運維了?而 ...
  • 我在隨筆《EAV模型(實體-屬性-值)的設計和低代碼的處理方案(1)》中介紹了一些基本的EAV模型設計知識和基於Winform場景下低代碼(或者說無代碼)的一些實現思路,在本篇隨筆中,我們來分析一下這種針對通用業務,且只需定義就能構建業務模塊存儲和界面的解決方案,其中的數據查詢處理的操作。 ...
  • 對某個遠程伺服器啟用和設置NTP服務(Windows系統) 打開註冊表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer 將 Enabled 的值設置為 1,這將啟用NTP伺服器功 ...
  • title: Django信號與擴展:深入理解與實踐 date: 2024/5/15 22:40:52 updated: 2024/5/15 22:40:52 categories: 後端開發 tags: Django 信號 松耦合 觀察者 擴展 安全 性能 第一部分:Django信號基礎 Djan ...
  • 使用xadmin2遇到的問題&解決 環境配置: 使用的模塊版本: 關聯的包 Django 3.2.15 mysqlclient 2.2.4 xadmin 2.0.1 django-crispy-forms >= 1.6.0 django-import-export >= 0.5.1 django-r ...
  • 今天我打算整點兒不一樣的內容,通過之前學習的TransformerMap和LazyMap鏈,想搞點不一樣的,所以我關註了另外一條鏈DefaultedMap鏈,主要調用鏈為: 調用鏈詳細描述: ObjectInputStream.readObject() DefaultedMap.readObject ...
  • 後端應用級開發者該如何擁抱 AI GC?就是在這樣的一個大的浪潮下,我們的傳統的應用級開發者。我們該如何選擇職業或者是如何去快速轉型,跟上這樣的一個行業的一個浪潮? 0 AI金字塔模型 越往上它的整個難度就是職業機會也好,或者說是整個的這個運作也好,它的難度會越大,然後越往下機會就會越多,所以這是一 ...
  • @Autowired是Spring框架提供的註解,@Resource是Java EE 5規範提供的註解。 @Autowired預設按照類型自動裝配,而@Resource預設按照名稱自動裝配。 @Autowired支持@Qualifier註解來指定裝配哪一個具有相同類型的bean,而@Resourc... ...