二:树莓派主板接线方法
接线方法:(树莓派接线位置如果看不懂可以参考下面的图)
树莓派 5V ——— 超声波VCC
树莓派GND ——— 超声波GND
树莓派GPIO7 ——— 超声波Trig
树莓派GPIO5 ——— 超声波Echo
用杜邦线把树莓派的针脚2(物理编号,VCC,5V),针脚6(物理编号,GND,负极),针脚7(GPIO4 ,BCM编码4,Trig),针脚18(GPIO5,BCM编码24,Echo)
三:Python测距代码程序
新建一个py文件,输入命令
sudo nano sr04.py
编辑程序:
#!/usr/bin/env python3 import time import RPi.GPIO as GPIO trigger_pin =7 echo_pin =18 GPIO.setmode(GPIO.BOARD) GPIO.setup(trigger_pin,GPIO.OUT) GPIO.setup(echo_pin,GPIO.IN) ''' TRIG 负责发射超声波,Echo 负责接收超声波 ''' def send_trigger_pulse(): #发送超声波,一直发 GPIO.output(trigger_pin,1) # 为了防止错误,因为紧接着就需要把发射端置为高电平 time.sleep(0.0001) #发射端置为高电平 GPIO.output(trigger_pin,0) ''' ECHO 负责接收超声波 ''' def wait_for_echo(value,timeout): count = timeout #通过该代码持续获取ECHO的状态 while GPIO.input(echo_pin)!= value and count>0: count = count-1 ''' 计算距离 ''' def get_distance(): # 发射 send_trigger_pulse() # 接收高电平 1/True wait_for_echo(True,10000) # 等待 start = time.time() #接收低电平 wait_for_echo(False,10000) finish = time.time() pulse_len = finish-start distance_cm = pulse_len/0.000058 return distance_cm while True: print("cm = %f"%get_distance()) time.sleep(1)
保存Ctrl+X按Y,然后继续执行命令查看测距数据:
sudo python3 sr04.py
每隔1秒刷新一次数据,实测看成测距还算比较精准!