Motor#

Introdução#

Motors and motor groups control how parts of a robot move. A Motor controls one configured IQ Smart Motor, while a MotorGroup controls multiple configured IQ Smart Motors together so they move in tandem. Motors and motor groups can be used to raise an arm, turn a claw, spin a wheel, or move another part of a build. Two motors can work together as a drivetrain to move and turn the whole robot.

Cada motor ou grupo de motores é configurado na janela Dispositivos. Dependendo da configuração, os nomes dos motores e dos grupos de motores podem sofrer alterações. Esta página utiliza motor_1 e motor_group_1 como exemplos de nomes. Substitua-os pelos nomes que configurou, conforme necessário.

Um motor VEX IQ (2ª geração) que mostra o sentido de rotação para a frente indicado por um sinal de mais e uma seta que indica que está a rodar para a esquerda, ou no sentido anti-horário. Um motor VEX IQ (2ª geração) que mostra o sentido inverso indicado por um sinal menos e uma seta que indica que está a rodar para a direita, ou no sentido dos ponteiros do relógio.

Por predefinição, FORWARD roda um motor no sentido anti-horário e REVERSE roda um motor no sentido horário. Se um motor estiver configurado para inverter o sentido de rotação, estes sentidos serão trocados.

Existem muitas formas de codificar motores e grupos de motores. Abaixo está uma lista de todos os métodos de codificação de motores e grupos de motores:

Ações — Parar e rodar motores e grupos de motores.

  • spin — Roda um motor ou um grupo de motores para a frente ou para trás para sempre.

  • spin_for — Roda um motor ou um grupo de motores a uma distância especificada.

  • spin_to_position — Roda um motor ou um grupo de motores para uma posição específica.

  • stop — Impede que um motor ou um grupo de motores gire.

Mutadores — Ajustam as definições do motor e do grupo de motores.

  • set_velocity — Indica a um motor ou grupo de motores a velocidade de rotação.

  • set_max_torque — Define o quanto um motor ou grupo de motores pode empurrar enquanto gira.

  • set_position — Altera a posição actual do motor ou do grupo de motores para um novo valor.

  • set_stopping — Define a forma como um motor ou grupo de motores irá parar de se mover: por travagem, inércia ou paragem.

  • set_timeout — Define durante quanto tempo um motor ou grupo de motores tentará completar um movimento.

  • set_reversed — Altera se o sentido de rotação de um motor é invertido.

  • reset_position — Altera a posição actual de um motor ou grupo de motores para 0.

Getters — Verifique o estado do motor e do grupo de motores.

  • position — Retorna a posição actual do motor ou do grupo de motores.

  • velocity — Devolve a velocidade de rotação do motor ou do grupo de motores.

  • current — Devolve a quantidade de corrente elétrica que o motor ou o grupo de motores está a utilizar.

  • is_done — Retorna se o motor ou o grupo de motores terminou de se mover, como um valor booleano.

  • is_spinning — Retorna se o motor ou o grupo de motores está a rodar, como um valor booleano.

  • direction — Devolve a direcção em que o motor ou o grupo de motores está a rodar.

  • power — Devolve a quantidade de potência que o motor ou o grupo de motores está a utilizar.

  • torque — Devolve a quantidade de binário que o motor ou o grupo de motores está a utilizar.

  • efficiency — Devolve a eficiência com que o motor ou o grupo de motores está a utilizar energia.

  • temperature — Devolve a temperatura do motor ou do grupo de motores.

  • count — Devolve o número de motores de um grupo de motores.

  • get_timeout — Retorna a duração do tempo limite actual do motor ou do grupo de motores.

Construtores — Inicialize e configure manualmente os motores e os grupos de motores.

Ações#

spin#

O comando spin faz com que um motor ou um grupo de motores gire para a frente ou para trás indefinidamente. O motor ou o grupo de motores continuará a rodar até receber outra ação, como rodar numa direção diferente ou parar.

Usage:
motor_1.spin(direction, velocity, units)

Parâmetros

Descrição

direction

O sentido de rotação do motor ou do grupo de motores: FORWARD ou REVERSE.

velocity

Optional. The velocity to spin with from 0% to 100% when using PERCENT. This can be an integer or decimal (float).

units

Opcional. Unidade de velocidade:

  • PERCENT
  • RPM — Rotações por minuto
  • VelocityUnits.DPS — Graus por segundo

# Spin the motor forward, then stop
motor_1.spin(FORWARD)
wait(1, SECONDS)
motor_1.stop()

spin_for#

O comando spin_for faz rodar um motor ou um grupo de motores por uma distância específica. A rotação é relativa à posição atual do motor ou grupo de motores. O projeto aguardará até que o motor ou o grupo de motores termine de rodar antes de executar a linha de código seguinte.

Usage:
motor_1.spin_for(direction, angle, units, velocity, units_v, wait)

Parâmetros

Descrição

direction

O sentido de rotação do motor ou do grupo de motores: FORWARD ou REVERSE.

angle

A distância a que o motor ou grupo de motores roda. Pode ser um número inteiro integer ou decimal (float).

units

Opcional. A unidade de distância: DEGREES (padrão) ou TURNS.

velocity

Optional. The velocity to spin with from 0% to 100% when using PERCENT. This can be an integer or decimal (float).

units_v

Opcional. Unidade de velocidade:

  • PERCENT
  • RPM (padrão) — Rotações por minuto

wait

Opcional.

  • wait=True (padrão) — Faz com que o projeto aguarde até que o motor ou o grupo de motores termine de rodar antes de executar a linha de código seguinte.
  • wait=False — Faz com que a próxima linha de código seja executada imediatamente.

# Spin the motor forward, then put it
# at 90 degrees
motor_1.spin(FORWARD)
wait(2, SECONDS)
motor_1.spin_to_position(90, DEGREES)

# Spin the motor at different velocities
# Using default velocity
motor_1.spin_for(FORWARD, 150, MM)
wait(1, SECONDS)
# Spin slower
motor_1.spin_for(REVERSE, 150, MM, 20, PERCENT)
wait(1, SECONDS)
# Spin faster
motor_1.spin_for(FORWARD, 150, MM, 100, PERCENT)

spin_to_position#

spin_to_position roda um motor ou grupo de motores para uma posição específica.

A posição de um motor ou grupo de motores é o quanto ele rodou, medido em DEGREES ou TURNSUma volta é igual a 360 graus. No início de um projeto, a posição do motor ou do grupo de motores é definida para 0 graus. A posição do motor ou do grupo de motores também pode ser definida através do método set_position.

Os valores de posição são absolutos. Isto significa que a direção da rotação depende da posição atual do motor ou do grupo de motores.

Por exemplo, se o motor ou o grupo de motores arrancar a 0 graus e rodar até uma posição de 720 graus, dará duas voltas para a frente. Se depois rodar até uma posição de 360 ​​graus, dará uma volta para trás, porque 360 ​​é inferior a 720.

Usage:
motor_1.spin_to_position(rotation, units, velocity, units_v, wait)

Parâmetros

Descrição

rotation

O valor da posição para a qual o motor ou o grupo de motores irá rodar. Pode ser um número inteiro integer ou decimal (float).

units

Unidade de posição: DEGREES ou TURNS.

velocity

Optional. The velocity to spin with from 0% to 100% when using PERCENT. This can be an integer or decimal (float).

units_v

Opcional. Unidade de velocidade:

  • PERCENT
  • RPM — Rotações por minuto
  • VelocityUnits.DPS — Graus por segundo

wait

Opcional.

  • wait=True (padrão) — Faz com que o projeto aguarde até que o motor ou o grupo de motores termine de rodar antes de executar a linha de código seguinte.
  • wait=False — Faz com que a próxima linha de código seja executada imediatamente.

# Spin the motor forward, then
# put it at 90 degrees
motor_1.spin(FORWARD)
wait(2, SECONDS)
motor_1.spin_to_position(90, DEGREES)

# Spin forward then quickly reverse
# to 0 degrees
motor_1.spin(FORWARD)
wait(2, SECONDS)
motor_1.spin_to_position(0, DEGREES, 100, PERCENT, wait=True)

stop#

stop impede que um motor ou um grupo de motores gire.

Usage:
motor_1.stop(mode)

Parâmetros

Descrição

mode

Opcional. Como o motor ou o grupo de motores irá parar:

  • COAST — Diminui a velocidade até parar.
  • BRAKE (padrão) — Pára imediatamente.
  • HOLD — Pára imediatamente e mantém a posição do motor.

# Spin the motor forward, then stop
motor_1.spin(FORWARD)
wait(1, SECONDS)
motor_1.stop()

# Spin the motor and coast to a stop
motor_1.set_velocity(100, PERCENT)
motor_1.spin(FORWARD)
wait(2, SECONDS)
motor_1.stop(COAST)

Mutantes#

set_velocity#

O parâmetro set_velocity define a velocidade de rotação de um motor ou grupo de motores. Uma percentagem mais elevada faz com que o motor ou o grupo de motores gire mais rapidamente, enquanto uma percentagem mais baixa faz com que o motor ou o grupo de motores gire mais lentamente.

Cada projeto começa com cada motor ou grupo de motores a rodar a 50% da velocidade por defeito.

Nota: Uma velocidade mais elevada faz com que o motor ou o grupo de motores gire mais rapidamente, mas pode resultar numa menor precisão. Uma velocidade mais baixa faz com que o motor ou o grupo de motores gire mais lentamente, mas pode resultar numa maior precisão.

Usage:
motor_1.set_velocity(velocity, units)

Parâmetros

Descrição

velocity

The velocity to spin with from 0% to 100% when using PERCENT. This can be an integer or decimal (float).

units

Opcional. Unidade de velocidade:

  • PERCENT
  • RPM — Rotações por minuto
  • VelocityUnits.DPS — Graus por segundo

# Spin the motor at different velocities
# Using default velocity
motor_1.spin_for(FORWARD, 150, MM)
wait(1, SECONDS)
# Spin slower
motor_1.set_velocity(20, PERCENT)
motor_1.spin_for(REVERSE, 150, MM)
wait(1, SECONDS)
# Spin faster
motor_1.set_velocity(100, PERCENT)
motor_1.spin_for(FORWARD, 150, MM)

set_max_torque#

O binário indica a força que um motor ou grupo de motores consegue exercer força de tração ou de empurrão enquanto gira.

set_max_torque define o binário máximo que um motor ou grupo de motores pode utilizar.

Uma percentagem mais elevada permite que o motor ou o grupo de motores empurre com mais força, como quando se levanta um objeto pesado. Uma percentagem mais baixa limita a força que o motor ou grupo de motores pode exercer. Isto pode ajudar a proteger o robô no caso de o motor ou grupo de motores ficar preso ou atingir o limite da sua capacidade de movimento.

Todos os projetos começam com o binário de cada motor ou grupo de motores a 50% por defeito.

Usage:
motor_1.set_max_torque(value, units)

Parâmetros

Descrição

value

O binário máximo que o motor ou o grupo de motores pode utilizar. Pode ser um número inteiro integer ou decimal (float).

units

Unidade de binário:

  • PERCENT
  • TorqueUnits.NM — Newton metros
  • TorqueUnits.INLB — Polegadas libras

# Spin the motor at different torque values
# Default
motor_1.spin_to_position(45, DEGREES)
# Spin at a lower torque
motor_1.set_max_torque(20, PERCENT)
motor_1.spin_to_position(0, DEGREES)
# Spin at the max torque
motor_1.set_max_torque(100, PERCENT)
motor_1.spin_to_position(45, DEGREES)

set_position#

A posição de um motor ou grupo de motores é o quanto ele rodou, medido em DEGREES ou TURNSUma volta é igual a 360 graus. set_position altera a posição atual do motor ou do grupo de motores para um novo valor.

Por exemplo, se um motor ou grupo de motores tiver rodado 180 graus, definir a posição para 0 graus irá repor essa posição de 180 para 0 graus. Em seguida, o motor ou o grupo de motores poderá rodar para posições com base neste novo valor.

Usage:
motor_1.set_position(position, units)

Parâmetros

Descrição

position

O valor de posição a definir para o motor ou grupo de motores. Pode ser um número inteiro integer ou decimal (float).

units

Unidade de posição: DEGREES ou TURNS.

# Position the motor at the
# new 0 degrees
motor_1.set_position(180, DEGREES)
motor_1.spin_to_position(0)

set_stopping#

set_stopping define a forma como um motor ou grupo de motores irá parar de se mover: por travagem, inércia ou paragem.

Usage:
motor_1.set_stopping(mode)

Parâmetros

Descrição

mode

Como o motor ou o grupo de motores irá parar:

  • BRAKE — Pára imediatamente.
  • COAST — Diminui a velocidade até parar.
  • HOLD — Pára imediatamente e mantém a posição do motor.

# Spin the motor and coast to a stop
motor_1.set_velocity(100, PERCENT)
motor_1.set_stopping(COAST)
motor_1.spin(FORWARD)
wait(2, SECONDS)
motor_1.stop()

set_timeout#

O parâmetro set_timeout define durante quanto tempo um motor ou grupo de motores tentará completar um movimento. Se o motor ou o grupo de motores não conseguir completar o movimento nesse tempo, interromperá a tentativa e passará para a linha de código seguinte. Isto evita que o motor ou o grupo de motores fique preso num movimento.

Usage:
motor_1.set_timeout(value, units)

Parâmetros

Descrição

value

O tempo que o motor ou o grupo de motores pode tentar para completar um movimento. Pode ser um número inteiro positivo integer ou decimal (float).

units

Opcional. Unidade de tempo:

  • SECONDS
  • MSEC (padrão) — Milissegundos

# Set a 0.5 second timeout for motor actions
motor_1.set_timeout(0.5, SECONDS)

# Try a long move that will time out early
motor_1.spin_for(FORWARD, 2, TURNS)
motor_1.spin_to_position(0, DEGREES)

set_reversed#

set_reversed altera se o sentido de rotação de um motor for invertido. Este método funciona da mesma forma que a definição do parâmetro reverse para True ao construir um Motor.

Nota: Este método funcionará apenas com um motor individual e não com um grupo de motores.

Usage:
motor_1.set_reversed(value)

Parâmetros

Descrição

value

Se o sentido de rotação do motor estiver invertido:

  • True — Inverte o sentido de rotação do motor.
  • False — Devolve o sentido de rotação do motor ao padrão.

# Change the reverse direction while spinning
motor_1.spin_for(FORWARD, 45)
motor_1.set_reversed(True)
motor_1.spin_for(FORWARD, 45)

reset_position#

reset_position altera a posição atual do motor ou do grupo de motores para 0.

Usage:
motor_1.reset_position()

Parâmetros

Descrição

Este método não tem parâmetros.

# Spin to 360 degrees, then reset the encoder
motor_1.spin_to_position(360, DEGREES)
motor_1.reset_position()

# Move again to 90 degrees from new zero point
motor_1.spin_to_position(90, DEGREES)

Getters#

position#

A posição de um motor ou grupo de motores é o quanto ele rodou, medido em DEGREES ou TURNSUma volta é igual a 360 graus. position devolve a posição atual do motor ou grupo de motores.

No início de um projeto, a posição do motor ou do grupo de motores é definida para 0 graus. Se o motor ou o grupo de motores rodar uma volta para a frente, a posição será de 360 ​​graus ou 1 volta. Se o motor ou o grupo de motores rodar no sentido oposto, a posição será negativa.

Usage:
motor_1.position(units)

Parâmetros

Descrição

units

Opcional. A unidade para voltar à posição do motor ou do grupo de motores em: DEGREES (padrão) ou TURNS.

# Spin the motor and display the
# ending position
motor_1.spin(FORWARD)
wait(1, SECONDS)
motor_1.stop()
brain.screen.print(motor_1.position())

velocity#

A velocidade velocity indica a rapidez com que o motor ou o grupo de motores está a rodar.

Um valor positivo significa que o motor ou o grupo de motores está a rodar para a frente. Um valor negativo significa que está a rodar para trás.

Usage:
motor_1.velocity(units)

Parâmetros

Descrição

units

Opcional. Unidade de velocidade a devolver:

  • PERCENT
  • RPM (padrão) — Rotações por minuto
  • VelocityUnits.DPS — Graus por segundo

current#

A opção current devolve a quantidade de corrente elétrica que o motor ou grupo de motores está a utilizar, medida em amperes, de 0,0 a 1,2 A. A corrente é a quantidade de eletricidade que flui através do motor ou grupo de motores.

Um valor de corrente mais elevado significa que o motor ou o grupo de motores está a consumir mais corrente elétrica. Isto pode acontecer quando o motor ou o grupo de motores está a levantar algo pesado, a empurrar um objeto ou a tentar mover-se quando está bloqueado.

Isto pode ser utilizado para verificar se o motor ou o grupo de motores está a apresentar dificuldades durante um movimento. Se a corrente se mantiver elevada, o motor pode sobreaquecer ou utilizar a energia de forma menos eficiente.

Usage:
motor_1.current(units)

Parâmetros

Descrição

units

Opcional. A unidade actual a ser devolvida:

  • CurrentUnits.AMP — Amperes

is_done#

is_done retorna se o motor ou o grupo de motores terminou de se mover, como um valor booleano. Isto pode ser utilizado para controlar o tempo de outros comportamentos com base no movimento do motor.

  • True — O motor ou o grupo de motores terminou de se mover.

  • False — O motor ou grupo motor ainda está em movimento.

Este método funciona em conjunto com os seguintes métodos de movimento que têm o parâmetro wait : spin_for e spin_to_position.

Usage:
motor_1.is_done()

Parâmetros

Descrição

Este método não tem parâmetros.

is_spinning#

is_spinning retorna se o motor ou o grupo de motores está a rodar, como um valor booleano. Isto pode ser utilizado para controlar o tempo de outros comportamentos com base no movimento do motor.

  • True — O motor ou o grupo de motores está a rodar.

  • False — O motor ou o grupo de motores não está a rodar.

Este método funciona em conjunto com os seguintes métodos de movimento que têm o parâmetro wait : spin_for e spin_to_position.

Usage:
motor_1.is_spinning()

Parâmetros

Descrição

Este método não tem parâmetros.

direction#

A direção direction motores.

  • FORWARD

  • REVERSE

Usage:
motor_1.direction()

Parâmetros

Descrição

Este método não tem parâmetros.

power#

A potência power indica a potência que o motor ou o grupo de motores está a consumir em watts. A potência mostra a rapidez com que o motor ou o grupo de motores está a consumir energia.

Um valor de potência mais elevado significa que o motor ou o grupo de motores está a consumir energia mais rapidamente. Isto pode acontecer quando o motor ou o grupo de motores está a levantar algo pesado, a empurrar um objeto ou a tentar mover-se quando está bloqueado.

Este pode ser utilizado para comparar movimentos ou verificar se o motor ou o grupo de motores está a apresentar dificuldades. Se a potência se mantiver elevada, o motor pode sobreaquecer ou utilizar a energia de forma menos eficiente.

Usage:
motor_1.power()

Parâmetros

Descrição

Este método não tem parâmetros.

torque#

O binário indica a força com que um motor ou grupo de motores está a rodar, empurrar ou puxar enquanto roda.

torque devolve a quantidade de binário que o motor ou grupo de motores está a utilizar.

Um valor de binário mais elevado significa que o motor ou o grupo de motores está a empurrar ou a puxar com mais força. Isto pode acontecer quando o motor ou o grupo de motores está a levantar algo pesado, a empurrar um objeto ou a tentar mover-se quando está preso.

Isto pode ser utilizado para verificar se o motor ou grupo motor está com dificuldades ou para comparar quanta força é necessária para diferentes movimentos.

Para definir o binário de um motor ou grupo de motores, utilize set_max_torque.

Usage:
motor_1.torque(units)

Parâmetros

Descrição

units

Unidade de binário a devolver:

  • TorqueUnits.NM (standard) — Newton metros
  • TorqueUnits.INLB — Polegadas libras

efficiency#

A eficiência efficiency indica a eficiência com que o motor ou grupo de motores está a utilizar energia, numa percentagem de 0% a 100%.

A eficiência indica quanta potência do motor ou do grupo motor está a ser utilizada para o movimento. Um valor de eficiência mais elevado significa que está a ser utilizada mais potência do motor ou do grupo motor para movimentar o corpo. Um valor de eficiência mais baixo pode ocorrer quando o motor ou o grupo motor está a trabalhar muito, mas não se move muito, como quando está preso ou a empurrar um objeto.

Isto pode ser utilizado para comparar movimentos ou verificar se o motor ou grupo motor está a desperdiçar energia em vez de a utilizar para o movimento.

Usage:
motor_1.efficiency()

Parâmetros

Descrição

Este método não tem parâmetros.

temperature#

A temperatura temperature motores.

A temperatura do motor indica o quão aquecido está o motor ou o conjunto do motor. Uma temperatura mais elevada significa que o motor ou o conjunto do motor está a aquecer durante o funcionamento. O motor deve permanecer abaixo dos 55 graus Celsius para continuar a funcionar com o máximo desempenho.

Se o motor ou o grupo de motores aquecer demasiado, reduzirá a sua corrente máxima para se proteger. A 70 graus Celsius, o motor deixa de funcionar até arrefecer.

Isto pode ser utilizado para verificar se o motor ou grupo motor está a sobreaquecer durante movimentos repetidos, longos períodos de funcionamento ou quando está a pressionar contra um objeto.

Usage:
motor_1.temperature(units)

Parâmetros

Descrição

units

Opcional. Unidade de temperatura a devolver:

  • TemperatureUnits.CELSIUS (padrão)
  • TemperatureUnits.FAHRENHEIT

count#

count devolve o número de motores num grupo de motores.

Nota: Este método funcionará apenas com um grupo de motores e não com um motor individual.

Usage:
motor_group_1.count()

Parâmetros

Descrição

Este método não tem parâmetros.

get_timeout#

get_timeout devolve o tempo limite atual do motor ou do grupo de motores em milissegundos.

Nota: Este método funcionará apenas com um motor individual e não com um grupo de motores.

Usage:
motor_1.get_timeout()

Parâmetros

Descrição

Este método não tem parâmetros.

Construtores#

Os construtores são utilizados para criar manualmente objetos do tipo Motor e MotorGroup fora da janela Dispositivos.

Motor#

Motor cria um motor.

Usage:
motor_1 = Motor(smartport, gears, reverse)

Parâmetro

Descrição

smartport

A porta inteligente à qual o motor está ligado é escrita como Ports.PORTx, onde x é o número da porta.

gears

Opcional. Relação de transmissão do motor:

  • GearSetting.RATIO_1_1 (padrão) — relação 1:1
  • GearSetting.RATIO_2_1 — relação 2:1
  • GearSetting.RATIO_3_1 — relação 3:1

reverse

Opcional. Define se o sentido de rotação do motor será invertido:

  • True — Inverte o sentido de rotação do motor.
  • False (padrão) — Não inverte o sentido de rotação do motor.

# Create a reversed motor
motor_1 = Motor(Ports.PORT1, 1.0, True)

Motor Group#

MotorGroup cria um grupo de motores.

Usage:
motor_group_1 = MotorGroup(motors)

Parâmetro

Descrição

motors

Os nomes dos objetos Motor criados anteriormente para serem colocados no grupo de motores. Podem ser adicionados até 12 objetos Motor ao grupo.

# Create two motors
motor_group_1_motor_a = Motor(Ports.PORT1, False)
motor_group_1_motor_b = Motor(Ports.PORT6, True)

# Create a motor group with those motors
motor_group_1 = MotorGroup(motor_group_1_motor_a, motor_group_1_motor_b)