def main(motors_id: tuple): ser.write(protocol.generate_set_pid_mode(protocol.PIDStatus.OFF)) ser.read() for motorx in protocol.Motors: ser.write( protocol.generate_manual_speed_command( motorx, 1, protocol.MotorsDirection.FORWARD)) consigne = [] retroaction = [] if ROTATION_TEST == True: rotation_test(motors_id, consigne, retroaction) else: direction_test(motors_id, consigne, retroaction) ser.write(protocol.generate_set_pid_mode(protocol.PIDStatus.ON)) for motorx in protocol.Motors: ser.write( protocol.generate_manual_speed_command( motorx, 1, protocol.MotorsDirection.FORWARD)) with open(fname + '.csv', 'w') as f: writer = csv.writer(f, delimiter=',') writer.writerow(consigne) writer.writerow(retroaction) print("Finish")
def set_motor_to_keyboard_speed(speed_x, speed_y): x_motors = (protocol.Motors.FRONT_X, protocol.Motors.REAR_X) y_motors = (protocol.Motors.FRONT_Y, protocol.Motors.REAR_Y) for motor_id in x_motors: ser.write(protocol.generate_manual_speed_command(motor_id, speed_x)) for motor_id in y_motors: ser.write(protocol.generate_manual_speed_command(motor_id, speed_y))
def set_consigne(cmd, companion_id, companion_direction, main_id, main_direction): ser.write( protocol.generate_manual_speed_command(main_id, cmd, main_direction)) ser.read(2) ser.write( protocol.generate_manual_speed_command(companion_id, COMPANION_COMMAND, companion_direction)) ser.read(2)
def main(): ser.write(protocol.generate_set_pid_mode(protocol.PIDStatus.OFF)) ser.read(1) motorx = protocol.Motors.FRONT_X pwm = 50 motor_dir = protocol.MotorsDirection.FORWARD ser.write(protocol.generate_manual_speed_command(motorx, pwm, motor_dir)) print_code(HEADER_W, ser) print_code(PAYLOAD_W, ser) ser.write(protocol.generate_set_pid_mode(protocol.PIDStatus.OFF)) ser.read(ser.in_waiting())
def update_all_motor_cmd(speed, direction): for motor_id in protocol.Motors: ser.write( protocol.generate_manual_speed_command(motor_id, speed, direction)) time.sleep(DEFAULT_COMM_SLEEP)
def all_motors(screen): ser.read(ser.inWaiting()) screen.clear() screen.addstr("Vitesse: ") screen.nodelay(False) curses.echo() try: speed = int(screen.getstr(3)) except ValueError: speed = DEFAULT_SPEED screen.addstr(1, 0, "Direction (f|b): ") try: dir_key = screen.getkey() direction = directions[dir_key] except KeyError: direction = DEFAULT_DIRECTION screen.nodelay(True) curses.noecho() screen.clear() for motor_id in protocol.Motors: ser.write( protocol.generate_manual_speed_command(motor_id, speed, direction)) ser.read(1) time.sleep(DEFAULT_COMM_SLEEP) sub_run = True while sub_run: try: user_key = screen.getkey() except curses.error: user_key = -1 draw_all_motor_menu(direction, screen, speed) if user_key in ['q', 'Q', 'c', 'C']: sub_run = False elif user_key == 's': screen.nodelay(False) curses.echo() screen.clear() try: speed = int(screen.getstr(3)) except ValueError: pass screen.nodelay(True) curses.noecho() update_all_motor_cmd(speed, direction) draw_all_motor_menu(direction, screen, speed) elif user_key == 'd': screen.nodelay(False) curses.echo() screen.clear() try: dir_key = screen.getkey() direction = directions[dir_key] except KeyError: pass screen.nodelay(True) curses.noecho() update_all_motor_cmd(speed, direction) draw_all_motor_menu(direction, screen, speed) for motor_id in protocol.Motors: ser.write( protocol.generate_manual_speed_command(motor_id, 0, direction)) time.sleep(DEFAULT_COMM_SLEEP) return None
def motor(screen): global directions screen.nodelay(False) screen.clear() curses.echo() screen.addstr("ID du moteur [1-4]: ") motor_id = int(screen.getkey()) motor_id = motors_id[motor_id] screen.addstr(1, 0, "Vitesse du moteur [0-100]: ") try: speed = int(screen.getstr(3)) except ValueError: speed = DEFAULT_SPEED screen.addstr(2, 0, "Direction [f|b]: ") try: dir_key = screen.getkey() direction = directions[dir_key] except KeyError: direction = DEFAULT_DIRECTION curses.noecho() screen.clear() screen.nodelay(True) ser.write( protocol.generate_manual_speed_command(motor_id, speed, direction)) sub_run = True while sub_run: ser.read(ser.inWaiting()) time.sleep(0.050) screen.clear() motor_speed = read_encoder(motor_id, ser) draw_motor_menu(direction, motor_speed, screen, speed) try: user_key = screen.getkey() except curses.error: user_key = -1 if user_key in ['c', 'C', 'q', 'Q']: sub_run = False elif user_key in ['s', 'S']: screen.nodelay(False) screen.clear() curses.echo() try: screen.move(0, 0) speed = int(screen.getstr(3)) except ValueError: screen.addstr(4, 0, "La vitesse doit etre un nombre valide.") curses.noecho() screen.nodelay(True) elif user_key in ['d', 'D']: screen.nodelay(False) screen.clear() curses.echo() try: screen.move(0, 0) dir_key = screen.getkey() direction = directions[dir_key] except KeyError: screen.addstr(4, 0, "La direction doit etre soit 'c' ou soit 'cc'.") curses.noecho() screen.nodelay(True) ser.write(protocol.generate_manual_speed_command(motor_id, 0, direction)) return None