class Robot: def __init__(self): self.right_arm = Arm() self.left_arm = Arm() self.front_right_wheel = Wheel() self.back_right_wheel = Wheel() self.front_left_wheel = Wheel() self.back_left_wheel = Wheel() def move_forward(self): self.front_right_wheel.forward() self.back_right_wheel.forward() self.front_left_wheel.forward() self.back_left_wheel.forward() def turn_right(self): self.front_right_wheel.backward() self.back_right_wheel.backward() self.front_left_wheel.forward() self.back_left_wheel.forward()
if not stop: # if the panic stop is pressed. # cache all the states then stop the wheels left_cache = (left_wheel.state, left_wheel.speed) right_cache = (right_wheel.state, right_wheel.speed) left_wheel.stop() right_wheel.stop() stop = not stop else: # if resume pressed, # resume the states of the wheels with cache if left_cache[0] == "forward": left_wheel.forward(left_cache[1]) elif left_cache[0] == "backward": left_wheel.backward(left_cache[1]) else: left_wheel.stop() if right_cache[0] == "forward": right_wheel.forward(right_cache[1]) elif right_cache[0] == "backward": right_wheel.backward(right_cache[1]) else: right_wheel.stop() stop = not stop # either panic stop or resume press, the state will change # record it. left_history.appendleft(left_wheel.get_state()) left_history.pop()
GPIO.setmode(GPIO.BCM) left_wheel = Wheel('left', LEFT_CHANNEL) right_wheel = Wheel('right', RIGHT_CHANNEL) # move forward left_wheel.forward() right_wheel.forward() sleep(3) # stopped left_wheel.stop() right_wheel.stop() sleep(3) # move backward left_wheel.backward() right_wheel.backward() sleep(3) # stopped left_wheel.stop() right_wheel.stop() sleep(3) # Pivot left left_wheel.backward() right_wheel.forward() sleep(3) # stopped left_wheel.stop()