连接超声波模块:
- 将超声波模块的VCC引脚和树莓派的5V引脚相连。
- 将超声波模块的GND引脚和树莓派的GND引脚相连。
- 将超声波模块的TRIG引脚和树莓派的GPIO引脚相连,TRIG引脚可以选择任意一个GPIO引脚。
- 将超声波模块的ECHO引脚和树莓派的GPIO引脚相连,ECHO引脚可以选择任意一个GPIO引脚。
编程:
- 安装RPi.GPIO库:sudo apt-get install python-rpi.gpio
- 导入RPi.GPIO库:import RPi.GPIO as GPIO
- 设置GPIO引脚模式:GPIO.setmode(GPIO.BOARD)
- 设置GPIO引脚为输出模式:GPIO.setup(TRIG, GPIO.OUT)
- 设置GPIO引脚为输入模式:GPIO.setup(ECHO, GPIO.IN)
- 发送超声波信号:GPIO.output(TRIG, True); time.sleep(0.00001); GPIO.output(TRIG, False)
- 计算超声波传播时间:while GPIO.input(ECHO) == 0: pulse_start = time.time() # 起始时间while GPIO.input(ECHO) == 1: pulse_end = time.time() # 终止时间pulse_duration = pulse_end - pulse_start
- 计算距离:distance = pulse_duration * 17150 # 声速在空气中的传播速度distance = round(distance, 2) # 保留两位小数
完整代码示例:
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
TRIG = 7
ECHO = 11
GPIO.setup(TRIG, GPIO.OUT)
GPIO.setup(ECHO, GPIO.IN)
try:
while True:
GPIO.output(TRIG, True)
time.sleep(0.00001)
GPIO.output(TRIG, False)
while GPIO.input(ECHO) == 0:
pulse_start = time.time()
while GPIO.input(ECHO) == 1:
pulse_end = time.time()
pulse_duration = pulse_end - pulse_start
distance = pulse_duration * 17150
distance = round(distance, 2)
print("Distance:", distance, "cm")
time.sleep(1)
except KeyboardInterrupt:
GPIO.cleanup()