基于格物编程科创板套件的 避障程序
本程序基于格物编程科创板套件,实现了小车避障的功能。程序通过超声波传感器检测前方障碍物的距离,并根据距离控制小车的运动方向,从而实现避障功能。
代码如下:
# 导入需要的模块
import RPi.GPIO as GPIO
import time
# 设置GPIO模式
GPIO.setmode(GPIO.BOARD)
# 设置超声波传感器的引脚
TRIG_PIN = 11
ECHO_PIN = 12
# 设置电机的引脚
IN1 = 16
IN2 = 18
IN3 = 22
IN4 = 24
# 设置超声波传感器的触发引脚为输出模式,回声引脚为输入模式
GPIO.setup(TRIG_PIN, GPIO.OUT)
GPIO.setup(ECHO_PIN, GPIO.IN)
# 设置电机的引脚为输出模式
GPIO.setup(IN1, GPIO.OUT)
GPIO.setup(IN2, GPIO.OUT)
GPIO.setup(IN3, GPIO.OUT)
GPIO.setup(IN4, GPIO.OUT)
# 定义小车前进、后退、左转、右转的函数
def forward():
GPIO.output(IN1, GPIO.HIGH)
GPIO.output(IN2, GPIO.LOW)
GPIO.output(IN3, GPIO.HIGH)
GPIO.output(IN4, GPIO.LOW)
def backward():
GPIO.output(IN1, GPIO.LOW)
GPIO.output(IN2, GPIO.HIGH)
GPIO.output(IN3, GPIO.LOW)
GPIO.output(IN4, GPIO.HIGH)
def left():
GPIO.output(IN1, GPIO.LOW)
GPIO.output(IN2, GPIO.HIGH)
GPIO.output(IN3, GPIO.HIGH)
GPIO.output(IN4, GPIO.LOW)
def right():
GPIO.output(IN1, GPIO.HIGH)
GPIO.output(IN2, GPIO.LOW)
GPIO.output(IN3, GPIO.LOW)
GPIO.output(IN4, GPIO.HIGH)
# 定义超声波传感器测距的函数
def ultrasonic_distance():
# 发送触发信号
GPIO.output(TRIG_PIN, GPIO.HIGH)
time.sleep(0.00001)
GPIO.output(TRIG_PIN, GPIO.LOW)
# 接收回声信号,计算距离
while GPIO.input(ECHO_PIN) == 0:
pass
start_time = time.time()
while GPIO.input(ECHO_PIN) == 1:
pass
end_time = time.time()
duration = end_time - start_time
distance = duration * 340 * 100 / 2
return distance
# 主程序
try:
while True:
# 获取超声波传感器测得的距离
distance = ultrasonic_distance()
print("Distance: %.2f cm" % distance)
# 根据距离控制小车运动的方向
if distance > 20:
forward()
else:
left()
time.sleep(0.5)
backward()
time.sleep(1)
right()
time.sleep(0.5)
forward()
except KeyboardInterrupt:
GPIO.cleanup()
程序运行时,超声波传感器会不断测量前方障碍物的距离,并根据距离控制小车的运动方向。当距离大于20cm时,小车向前行驶;当距离小于等于20cm时,小车会先向左转0.5秒,然后向后倒退1秒,再向右转0.5秒,最后向前行驶。这样就可以实现避障功能了
原文地址: https://www.cveoy.top/t/topic/hfox 著作权归作者所有。请勿转载和采集!