def avoid(direction): '''장애물 회피 comment 입력 필요''' #dummy code stop() sleep(1) #return 0 #sample code, 아마 도착시 대각선으로 닿아 있는 편이 좋을 듯 stop() sleep(0.1) #회전 car.engine(True, False, 30, 30) while ultraModule.getDistance() < 25: pass stop() sleep(0.1) car.engine(True, True, 30, 30) sleep(0.6) stop() sleep(0.1) #전진 car.engine(True, True, 20, 40) #sleep(1) while not trackingModule.bit2(): pass stop() sleep(0.3) car.engine(True, True, 30, 30)
def avoid(direction): '''장애물 회피 comment 입력 필요''' #dummy code stop() sleep(1) #return 0 #sample code, 아마 도착시 대각선으로 닿아 있는 편이 좋을 듯 if direction == 'l': stop() sleep(0.1) #회전 car.engine(True, False, 0, 30) sleep(1) car.engine(False, False, 10, 50) #휘어서 후진? 그냥 후진? while not trackingModule.bitCount() >= 3: pass stop() sleep(1) car.engine(False, False, 0, 30) while ultraModule.getDistance() < 30: pass sleep(0.5) #쪼끔만 더 돌자 stop() sleep(0.1) #전진 car.engine(True, True, 20, 60) #sleep(1) while not trackingModule.bit16(): pass stop() sleep(1)
def go_forward_any(speed): leftmotor(forward0) GPIO.output(MotorLeft_PWM, GPIO.HIGH) rightmotor(forward1) GPIO.output(MotorRight_PWM, GPIO.HIGH) # to avoid collision between go_forward_any method and turn method, insert a infinite loop while 1: distance = getDistance() if distance < dis: break LeftPwm.ChangeDutyCycle(speed) RightPwm.ChangeDutyCycle(speed)
def avoid(direction): '''장애물 회피 comment 입력 필요''' #dummy code stop() sleep(1) #return 0 #sample code, 아마 도착시 대각선으로 닿아 있는 편이 좋을 듯 stop() sleep(0.1) #회전 car.engine(True, False, 30, 30) while ultraModule.getDistance()<25: pass stop() sleep(0.1) car.engine(True, True, 30, 30) sleep(0.6) stop() sleep(0.1) #전진 car.engine(True, True, 20, 40) #sleep(1) while not trackingModule.bit8(): pass stop() sleep(0.3) count=0 car.engine(True, True, 25, 0) while not trackingModule.bit2(): count+=1 print(count) if count%1500==0: car.engine(True, True, 25, 0) elif count>60000: car.engine(True, True, 30, 30) pass stop() sleep(0.3) car.engine(True, True, 30, 30)
if __name__ == "__main__": try: Tmode = input("choose 'l or 'r'") dis = 13 ###수정해도 됨 #차 시동을 건다. car.startUp() endline = True if Tmode == 'l': car.engine(True, True, 30, 35) else: car.engine(True, True, 35, 30) sleep(0.1) while endline: distance = ultraModule.getDistance() ###초음파센서 if distance < dis: print(distance) avoid(Tmode) else: endline = lineTracking(Tmode) #차 시동을 끈다. car.turnOff() #ctrl + c 키로 종료한 경우 except KeyboardInterrupt: print("강제종료 하셨습니다.") #오류로 인한 종료 시 시동끄기 함수 호출. 없다면 오류로 프로그램이 종료된 이후에도 바퀴가 돌 수 있다. finally: car.turnOff()
PPicar.engine(False, True, speed, speed) def right_point_turn(speed):#left moter true, right motor false PPicar.engine(True, False, speed, speed) #need infinitive turn #need print current status if __name__ == "__main__": dis=20 obs=1 PPicar.startUp() while obs<3: distance = ultraModule.getDistance() if distance > dis go_forward(25) else: PPicar.stop() left_swing_turn() obs+=1 PPicar.stop() sleep(1) PPicar.stop() print('clear')
# define your variables and find out each value of variables # to perform the project3 with ultra sensor # and swing turn # ======================================================================= dis = 20 # ?? obstacle = 1 # when obstacle=1, the power and # running time of the first turn SwingPr = 90 # student assignment (8) SwingTr = 0.9 # student assignment (9) try: while True: # ultra sensor replies the distance back distance = getDistance() print('distance= ', distance) # when the distance is above the dis, moving object forwards if (distance > dis): go_forward_any(30) print("now i'am going") print('obstacle=', obstacle) # when the distance is below the dis, moving object stops else: stop() rightSwingTurn(53, 1) #go reverse 'r'shape print("turn around") # stop and wait 1 second stop()