class MotorController: def __init__(self): self.wheel1 = Wheel(input1 = LEFT_INPUT_1, input2 = LEFT_INPUT_2, encoder_pin = LEFT_ENCODER , forward_flags = [False , True] , reverse_flags = [True , False]) self.wheel2 = Wheel(input1 = RIGHT_INPUT_1 , input2 = RIGHT_INPUT_2, encoder_pin = RIGHT_ENCODER , forward_flags = [True , False] , reverse_flags = [False , True]) def forward(self , state_count = 1): current_state_count = 0 while current_state_count != state_count: self.wheel1.forward() self.wheel2.forward() current_state_count += 1 def reverse(self , state_count = 1): current_state_count = 0 while current_state_count != state_count: self.wheel1.reverse() self.wheel2.reverse() current_state_count += 1
elif y < 50: # prepare to panic stop if not stopped. 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.
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()
# Zhuo Chen zc292 # Rui Min rm977 import RPi.GPIO as GPIO from time import sleep from motor_control import pwm_motor from wheel import Wheel LEFT_CHANNEL = 13 RIGHT_CHANNEL = 19 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()