1. 程式人生 > 實用技巧 >樹莓派-感測器 HC-SR04 超聲波測距

樹莓派-感測器 HC-SR04 超聲波測距

HC-SR04 介紹

電器引數

電器引數 HC-SR04超聲波模組
工作電壓 DC5V
工作電流 15mA
工作頻率 40Hz
最遠射程 4m
最近射程 2cm
測量角度 15度
輸入觸發訊號 10us的TTL脈衝
輸出迴響訊號 輸出TTL電平訊號,與射程成比例
規格尺寸 452015mm

引腳

VCC、trig(控制端)、echo(接收端)、GND

使用方法

一個控制口發一個10US以上的高電平,就可以在接收口等待高電平輸出.一有輸出就可以開定時器計時,當此口變為低電平時就可以讀定時器的值,此時就為此次測距的時間,方可算出距離.如此不斷的週期測,就可以達到你移動測量的值了。


程式

語言:python

引腳:

引腳 BCM 編碼
Vcc 5V
Trig 23
Echo 24
Gnd GND

樹莓派 40Pin 引腳對照表

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)

GPIO_TRIG = 23
GPIO_ECHO = 24

GPIO.setup(GPIO_TRIG, GPIO.OUT)
GPIO.setup(GPIO_ECHO, GPIO.IN)

def distance():
    # 傳送高電平訊號到 Trig 引腳
    GPIO.output(GPIO_TRIG, True)

    # 持續 10 us 
    time.sleep(0.00001)
    GPIO.output(GPIO_TRIG, False)

    # 高電平持續時間就是超聲波從發射到返回的時間
    while GPIO.input(GPIO_ECHO) == GPIO.LOW: pass
    start_time = time.time()
    while GPIO.input(GPIO_ECHO) == GPIO.HIGH: pass
    stop_time = time.time()

    # 計算距離 聲波的速度為 34000cm/s。
    distance = ((stop_time - start_time) * 34000) / 2

    return distance

while True:
    dist = distance()
    print("距離: {:.2f} cm".format(dist))
    time.sleep(1)


whosmeya.com