所谓的循迹就是让小车识别导引线,跟着导引线运行,在导引线组成的赛道上运行。循迹可以用红外传感器或者摄像头完成。我选择的是用红外传感器进行黑线循迹。
#coding=utf-8
import RPi.GPIO as GPIO
import time
#定义红外循迹传感器GPIO口
LSenso=29
RSenso=31
def init():
#设置接触警告
GPIO.setwarnings(False)
#设置引脚模式为物理模式
GPIO.setmode(GPIO.BOARD)
#红外循迹传感器引脚初始化,设置为输入,接受红外信号
GPIO.setup(LSenso,GPIO.IN)
GPIO.setup(RSenso,GPIO.IN)
#红外循迹函数
def track():
while True:
#接收两个红外传感器的信号
LS=GPIO.input(LSenso)
RS=GPIO.input(RSenso)
#左右两个传感器都检测到黑色,小车在赛道上,前进
if LS==True and RS==True:
print "前进"
turn_up(16,0.1)
#左边的传感器没检测到黑色,说明小车车身偏离赛道靠左,右转将小车车身向右调整
elif LS==False and RS==True:
print "右转"
turn_right(18,0.1)
#右边的传感器没检测到黑色,说明小车车身偏离赛道靠右,左转将小车车身向左调整
elif LS==True and RS==False:
print "左转"
turn_left(18,0.1)
#两个传感器都没有检测到黑色,说明小车完全偏离赛道,停止
else:
print "停止"
car_stop()
#主函数
if __name__=="__main__":
init()
L_Motor=GPIO.PWM(PWMA,100)
L_Motor.start(0)
R_Motor=GPIO.PWM(PWMB,100)
R_Motor.start(0)
try:
track() #调用循迹函数
except KeyboardInterrupt: #Ctrl+C 程序停止
GPIO.cleanup() #清除GPIO占用