下面给出一个树莓派4b使用HC-S104超声波模块的Python代码示例:
import time
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
TRIG_PIN = 23
ECHO_PIN = 24
SPEED_OF_SOUND = 34300 # cm/s
GPIO.setup(TRIG_PIN, GPIO.OUT)
GPIO.setup(ECHO_PIN, GPIO.IN)
GPIO.output(TRIG_PIN, GPIO.LOW)
time.sleep(0.5)
def get_distance():
GPIO.output(TRIG_PIN, GPIO.HIGH)
time.sleep(0.00001)
GPIO.output(TRIG_PIN, GPIO.LOW)
pulse_start = 0
pulse_end = 0
while GPIO.input(ECHO_PIN) == 0:
pulse_start = time.time()
while GPIO.input(ECHO_PIN) == 1:
pulse_end = time.time()
pulse_duration = pulse_end - pulse_start
distance = pulse_duration * SPEED_OF_SOUND / 2.0
return distance
try:
while True:
distance = get_distance()
print("Distance: %.2f cm" % distance)
time.sleep(0.5)
except KeyboardInterrupt:
GPIO.cleanup()
说明:
- 首先引入需要的模块:time用于延时,RPi.GPIO用于GPIO控制。
- 设置GPIO模式为BCM模式。
- 定义超声波模块的触发引脚和回声引脚的GPIO编号。
- 设置超声波模块的触发引脚为输出模式,回声引脚为输入模式。
- 设置触发引脚输出低电平,延时0.5s。
- 定义计算距离的函数get_distance(),该函数首先触发超声波,然后等待回声信号到达,计算回声时间,最终计算出距离。
- 在主程序中循环调用get_distance()函数,打印距离信息,延时0.5s。
- 在程序结束时调用GPIO.cleanup()函数清理GPIO资源。