class Turntable: def __init__(self, port_motor_move, port_motor_turn): # Motor for moving turntable forwards and backwards self.motor_move = Motor(port_motor_move) self.motor_move.speed_sp = 400 self.motor_move.stop_action = 'brake' self.motor_move_positions = (0, -740, -890, -1030, -1175, -1380) # Motor for rotating turntable self.motor_turn = Motor(port_motor_turn) self.motor_turn.speed_sp = 400 self.motor_turn.stop_action = 'brake' self.motor_turn_positions = (0, -345, 345) @try_except def move_to_abs_pos(self, pos): ''' Move the turntable to given absolute position [0,..,5].''' self.motor_move.run_to_abs_pos( position_sp=self.motor_move_positions[pos]) @try_except def move_to_rel_pos(self, rel_pos): ''' Move the turntable over a given distance.''' self.motor_move.run_to_rel_pos(position_sp=rel_pos) # rel_pos=150 wait_while_motors_running(self.motor_move) @try_except def turn_to_abs_pos(self, pos): ''' Turn the turntable to a given absolute position [0,..,2].''' self.motor_turn.run_to_abs_pos( position_sp=self.motor_turn_positions[pos]) @try_except def goto_start_pos(self): ''' Move and turn the turntable to its start position.''' self.move_to_abs_pos(0) self.turn_to_abs_pos(0)
from ev3dev2.motor import Motor from ev3dev2.sensor.lego import TouchSensor from ev3dev2.sensor import INPUT_2, INPUT_3 motor1 = Motor(address = 'in1:i2c3:M1') motor2 = Motor(address = 'in1:i2c3:M2') touch1 = TouchSensor(INPUT_2) touch2 = TouchSensor(INPUT_3) motor1.speed_sp = 200 motor2.speed_sp = 200 #these motor instructions aren't very good # don't use them as an example of proper motor control while True: if touch1.is_pressed: motor1.position_sp = 100 else: motor1.position_sp = 0 if touch2.is_pressed: motor2.position_sp = 360 else: motor2.position_sp = 180 motor1.run_to_abs_pos() motor2.run_to_abs_pos()