def scan(): # 扫描函数 返回表示五路的值
return [car.d3(), car.d2(), car.d1(), car.a2(), car.a1()]
def default_go(): # 利用差速修正走直线的go
L = 60
R = 30
car.motor(L,R,L,R)
def diff_go(L,R): # 差速前进
car.motor(L,R,L,R)
def turn_45R(track, check=False): # 直角弯 (0,0,1,0,0) =>(0,0,1,1,1)
if check: # 传入check是确认是否要执行
if track == [0,0,0,1,1]:
return True
else:
return False
else: # 不传入check是执行函数
# car.right(30, 0.5)
# diff_go(30,0) # 转向的代码
car.right(60, 0.5)
car.go(30, 0.2)
if track == [0,1,1,1,0] or track == [0,1,1,0,0]: # 支线任务执行完毕
print("完成支线任务 turn_45R")
return True
else: # 支线任务还要继续执行
return False
def turn_45L(track, check=False): # 直角弯 (0,0,1,0,0) =>(0,0,1,1,1)
if check: # 传入check是确认是否要执行
if track == [1,1,1,1,0]:
return True
else:
return False
else: # 不传入check是执行函数
car.left(60, 0.5)
car.go(30, 0.2) # 转向的代码
if track == [0,1,1,1,0] or track == [0,0,1,1,0]: # 支线任务执行完毕
print("完成支线任务 turn_45L")
return True
else: # 支线任务还要继续执行
return False
def turn_90R(track, check=False): # 直角弯 (0,0,1,0,0) =>(0,0,1,1,1)
if check: # 传入check是确认是否要执行
if track == [0,0,1,1,1] or track == [0, 1, 1, 1, 1]:
return True
else:
return False
else: # 不传入check是执行函数
car.right(90, 0.5)
car.go(30, 0.2) # 转向的代码
if track == [0,1,1,1,0] or track == [0,1,1,0,0]: # 支线任务执行完毕
print("完成支线任务 turn_45R")
return True
else: # 支线任务还要继续执行
return False
def turn_90L(track, check=False): # 直角弯 (0,0,1,0,0) =>(0,0,1,1,1)
if check: # 传入check是确认是否要执行
if track == [1,1,1,1,0] or track == [1, 1, 1, 0, 0]:
return True
else:
return False
else: # 不传入check是执行函数
# car.right(30, 0.5)
diff_go(30,0) # 转向的代码
if track == [0,1,1,1,0] or track == [0,1,1,0,0]: # 支线任务执行完毕
print("完成支线任务 turn_45R")
return True
else: # 支线任务还要继续执行
return False
def main_loop(tasks=[]): # 主线前进任务
turning = False # 是否进入支线转向任务
index = 0 # 任务索引
while True:
sleep(0.01)
track = scan()
if not turning: # 不在转向内