树莓派 超声波模块HC-SR04的应用
第一次使用Markdown编辑器
空格是很重要的呦!
材料:
- 树莓派B型
- 面包板
- HC-SR04超声波模块
HC-SR04模块的工作原理
- 采用IO口TRIG触发测距,给至少10us的高电平信号;
- 模块自动发送8个40khz的方波,自动检测是否有信号返回;
- 有信号返回,通过IO口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。
- 测试距离=(高电平时间*声速(340M/S))/2;
- 详细内容请看 https://wenku.baidu.com/view/57ed956858fafab069dc02fc.html
树莓派 B型的针脚图
HC-SR04模块接线
- Vcc 接+5V
- Echo 接 GPIO 针脚
- Trig 接 GPIO 针脚
- Gnd 接 0V
python 编程
import wiringpi as gpio
import time
from wiringpi import GPIO
Trig=6
Echo=7
gpio.wiringPiSetup()#初始化为wiringpiGPIO
gpio.pinMode(Trig,GPIO.OUTPUT)#7脚为输出
gpio.pinMode(Echo,GPIO.INPUT)#6脚为输入
def jvli():
t1=0
t2=0
gpio.digitalWrite(Trig,GPIO.HIGH)
gpio.delay(10)
gpio.digitalWrite(Trig,GPIO.LOW)
while gpio.digitalRead(Echo)==0:
pass
t1=gpio.micros()
#t1 = time.time()
#print(t1)
while gpio.digitalRead(Echo)==1:
pass
t2=gpio.micros()
#t2 = time.time()
# print(t2)
distance=343*(t2-t1)/10000/2
print("distance :{} cm".format(distance))
print("-"*50)
for i in range(10):
jvli()
time.sleep(2)
import RPi.GPIO as GPIO
import time
#初始化设置
GPIO.setmode(GPIO.BCM)
Trig = 25
Echo = 4
GPIO.setup(Trig,GPIO.OUT)
GPIO.setup(Echo,GPIO.IN)
for i in range(10):
# 发送 trig 信号 持续 10us 的方波脉冲
GPIO.output(Trig,True)
time.sleep(0.00001)
GPIO.output(Trig,False)
# 等待低电平结束,然后记录时间。
while (GPIO.input(Echo)==0):
pass
start = time.time()
#等待高电平结束,然后记录时间。
while (GPIO.input(Echo) == 1):
pass
end = time.time()
duration = end - start
distance = duration * 34300/2
distance = round(distance,2)
print("Distance: {}cm".format(distance))
print("-"*50)
慢慢来吧