Motor e Grupo Motor#

Introdução#

Os motores e os grupos de motores controlam a forma como as partes de um robô se movem. Um Motor controla um Smart Motor configurado, enquanto um MotorGroup controla vários Smart Motors configurados em conjunto para que se movam em conjunto. Os motores e os grupos de motores podem ser utilizados para levantar um braço, rodar uma garra, rodar uma roda ou mover outra parte de uma construção. Dois ou quatro motores podem trabalhar em conjunto como um trem de força para mover e rodar todo o robô.

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 V5 que mostra o sentido de rotação 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 V5 que mostra o sentido inverso indicado por um sinal de 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 específica.

  • 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_position — Altera a posição actual do motor ou do grupo de motores para um novo valor.

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

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

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

  • set_timeout — Define durante o tempo que 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.

  • 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.

  • 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.

  • 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 (padrão) — Rotações por minuto
  • VelocityUnits.DPS — Graus por segundo
  • VOLT — Tensão

# Spin the motor, 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 once, then reset
motor_1.spin_for(FORWARD, 90, DEGREES)
wait(1, SECONDS)
motor_1.spin_for(REVERSE, 90, DEGREES)

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 to the new 0 position
motor_1.set_position(180, DEGREES)
motor_1.spin_to_position(0, DEGREES)

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:

  • 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, then stop
motor_1.spin(FORWARD)
wait(1, SECONDS)
motor_1.stop()

Mutantes#

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

Opcional. A unidade de posição: DEGREES (padrão) ou TURNS.

# Spin the motor to the new 0 position
motor_1.set_position(180, DEGREES)
motor_1.spin_to_position(0, DEGREES)

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 (padrão) — Rotações por minuto
  • VelocityUnits.DPS — Graus por segundo

# Spin forward at the default velocity
motor_1.spin_for(FORWARD, 100)
wait(1, SECONDS)

# Spin slower
motor_1.set_velocity(20, PERCENT)
motor_1.spin_for(FORWARD, 100)
wait(1, SECONDS)

# Spin faster
motor_1.set_velocity(100, PERCENT)
motor_1.spin_for(FORWARD, 100)
wait(1, SECONDS)

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.

Se este método não for utilizado, o motor utilizará BRAKE ao parar.

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

Opcional. Unidade de torque:

  • PERCENT
  • TorqueUnits.NM (padrão) — Newton metros
  • TorqueUnits.INLB — Polegadas-libras
  • CurrentUnits.AMP

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_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 quando se constrói 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.

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.

Getters#

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.

# Drive forward until the motor is done spinning
motor_1.spin_for(FORWARD, 200, wait=False)
while True:
  if motor_1.is_done():
    drivetrain.stop()
  else:
    drivetrain.drive(FORWARD)

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.

# Drive forward until the motor is done spinning
motor_1.spin_for(FORWARD, 200, wait=False)
while True:
  if motor_1.is_spinning():
    drivetrain.drive(FORWARD)
  else:
    drivetrain.stop()

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.

# Display the motor's position after spinning
brain.screen.print(motor_1.position())
brain.screen.next_row()

motor_1.spin(FORWARD)
wait(1, SECONDS)
brain.screen.print(motor_1.position())

motor_1.stop()

velocity#

A velocidade velocity o motor ou grupo de motores está a rodar, numa percentagem de -100% a 100% ou em rotações por minuto de -127 rpm a 127 rpm.

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 atual a ser devolvida:

  • CurrentUnits.AMP (padrão) — Amperes

power#

A potência power devolve a quantidade de energia que o motor ou grupo de motores está a utilizar, medida em watts, de 0,0 a 22,0 W. A potência mostra a rapidez com que o motor ou 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(units)

Parâmetros

Descrição

units

Opcional. A unidade de potência a devolver:

  • PowerUnits.WATT (padrão) — Watt

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, medida em polegadas-libras (InLb) de 0,0 a 22,0 ou Newton-metros (Nm) de 0,0 a 2,1.

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(units)

Parâmetros

Descrição

units

Opcional. Unidade de eficiência a devolver:

  • PERCENT (padrão)

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 °C para continuar a trabalhar 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 °C, 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
  • PERCENT

count#

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

Nota: Este método funcionará apenas com um grupo motor.

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 actual do motor ou grupo de motores em milissegundos.

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(port, gears, reverse)

Parâmetro

Descrição

port

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 é invertido:

  • True — Faz FORWARD rodar no sentido dos ponteiros do relógio.
  • FORWARD (padrão) — Faz com que False gire no sentido contrário ao dos ponteiros do relógio.

# Create a Motor in Port 1 with default values
motor_1 = Motor(Ports.PORT1)

"""
Create a motor with the following values:
- In Port 1
- 2:1 ratio
- Reversed
"""
motor_1 = Motor(Ports.PORT1, GearSetting.RATIO_2_1, True)

MotorGroup#

MotorGroup cria um grupo de motores.

Usage:
MotorGroup(motors)

Parâmetro

Descrição

motors

Os nomes dos objectos Motor criados anteriormente para colocar no grupo de motores, separados por vírgulas (,). Podem ser adicionados até 12 objetos Motor ao grupo.

# Create the Motors
motor_1 = Motor(Ports.PORT1)
motor_2 = Motor(Ports.PORT2)

# Create a Motor Group
motor_group_1 = MotorGroup(motor_1, motor_2)