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.
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.
Motor— Cria um motor.MotorGroup— Cria um grupo 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 |
|---|---|
|
O sentido de rotação do motor ou do grupo de motores: |
|
Optional. The velocity to spin with from 0% to 100% when using |
|
Opcional. Unidade de velocidade:
|
# 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 |
|---|---|
|
O sentido de rotação do motor ou do grupo de motores: |
|
A distância a que o motor ou grupo de motores roda. Pode ser um número inteiro |
|
Opcional. A unidade de distância: |
|
Optional. The velocity to spin with from 0% to 100% when using |
|
Opcional. Unidade de velocidade:
|
|
Opcional.
|
# 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 |
|---|---|
|
O valor da posição para a qual o motor ou o grupo de motores irá rodar. Pode ser um número inteiro |
|
Unidade de posição: |
|
Optional. The velocity to spin with from 0% to 100% when using |
|
Opcional. Unidade de velocidade:
|
|
Opcional.
|
# 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 |
|---|---|
|
Opcional. Como o motor ou o grupo de motores irá parar:
|
# 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 |
|---|---|
|
The velocity to spin with from 0% to 100% when using |
|
Opcional. Unidade de velocidade:
|
# 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 |
|---|---|
|
O binário máximo que o motor ou o grupo de motores pode utilizar. Pode ser um número inteiro |
|
Unidade de binário:
|
# 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 |
|---|---|
|
O valor de posição a definir para o motor ou grupo de motores. Pode ser um número inteiro |
|
Unidade de posição: |
# 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 |
|---|---|
|
Como o motor ou o grupo de motores irá parar:
|
# 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 |
|---|---|
|
O tempo que o motor ou o grupo de motores pode tentar para completar um movimento. Pode ser um número inteiro positivo |
|
Opcional. Unidade de tempo:
|
# 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 |
|---|---|
|
Se o sentido de rotação do motor estiver invertido:
|
# 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 |
|---|---|
|
Opcional. A unidade para voltar à posição do motor ou do grupo de motores em: |
# 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 |
|---|---|
|
Opcional. Unidade de velocidade a devolver:
|
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 |
|---|---|
|
Opcional. A unidade actual a ser devolvida:
|
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.
FORWARDREVERSE
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 |
|---|---|
|
Unidade de binário a devolver:
|
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 |
|---|---|
|
Opcional. Unidade de temperatura a devolver:
|
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 |
|---|---|
|
A porta inteligente à qual o motor está ligado é escrita como |
|
Opcional. Relação de transmissão do motor:
|
|
Opcional. Define se o sentido de rotação do motor será invertido:
|
# 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 |
|---|---|
|
Os nomes dos objetos |
# 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)