Transmissão#
Introdução#
O robô 123 possui um sistema de tração às duas rodas que lhe permite conduzir e virar. Os métodos de tração controlam a forma como o robô se move.
O sistema de transmissão pode medir a distância de duas formas: em passos e em mm (milímetros). Um passo corresponde a um quadrado num campo de 123.
Existem muitas formas de programar o sistema de transmissão. Abaixo está uma lista de todos os métodos de programação do sistema de transmissão:
Ações — Mova e rode o robô.
drive— Move o robô para a frente ou para trás para sempre.drive_for— Move o robô para a frente ou para trás uma distância específica.drive_until— Move o robô para a frente ou para trás até detetar um objeto, colisão ou linha.turn— Vira o robô para a esquerda ou para a direita para sempre.turn_for— Roda o robô para a esquerda ou para a direita de um número específico de graus.turn_to_heading— Roda o robô para enfrentar uma direção específica de -359 a 359 graus.stop— Interrompe o movimento do robô.
Mutadores — Ajustam as definições da transmissão.
set_timeout— Define durante quanto tempo o robô tentará terminar um movimento.set_heading— Altera a direção atual do robô para uma nova direção.
Receptores — Verifiquem o estado de movimentação.
is_stopped— Retorna se o robô parou de se mover, como um valor booleano.get_heading— Retorna a direção atual do robô de 0 a 359 graus.
Ações#
drive#
drive moves the robot forward or reverse forever. The robot will continue to move until it is given another action, like turning or stopping.
Usage:
robot.drive(direction)
Parâmetros |
Descrição |
|---|---|
|
A direção em que o robô se move: |
# Drive for 2 seconds.
robot.drive(FORWARD)
wait(2, SECONDS)
robot.stop()
drive_for#
O comando drive_for move o robô para a frente ou para trás por uma distância específica. O projeto aguardará até que o robô termine de se mover antes de executar a próxima linha de código.
Usage:
robot.drive_for(direction, distance, unit)
Parâmetros |
Descrição |
|---|---|
|
A direção em que o robô se move: |
|
A distância percorrida pelo robô. Pode ser um número inteiro ou decimal. |
|
A unidade de distância: |
# Drive back and forth.
robot.drive_for(FORWARD, 3, STEPS)
robot.drive_for(REVERSE, 3, STEPS)
drive_until#
drive_until move o robô para a frente ou para trás até detetar um objeto, uma colisão ou uma linha.
Usage:
robot.drive_until(direction)
Parâmetros |
Descrição |
|---|---|
|
A direção em que o robô se move: |
# Reverse after a crash.
robot.drive_until(FORWARD)
robot.drive_for(REVERSE, 1, STEPS)
turn#
O comando turn o robô vire para a esquerda ou para a direita indefinidamente. O robô continuará a virar até receber outra ação, como conduzir ou parar.
Usage:
robot.turn(direction)
Parâmetros |
Descrição |
|---|---|
|
Direção para a qual o robô vira: |
# Turn for 2 seconds.
robot.turn(RIGHT)
wait(2, SECONDS)
robot.stop()
turn_for#
O comando turn_for roda o robô para a esquerda ou para a direita de um número específico de graus. O projeto aguardará até que o robô termine de rodar antes de executar a próxima linha de código.
Usage:
robot.turn_for(direction, degrees)
Parâmetros |
Descrição |
|---|---|
|
Direção para a qual o robô vira: |
|
O número de graus a rodar. Pode ser um número inteiro ou decimal. |
# Turn left, then turn around to the right.
robot.turn_for(LEFT, 90)
robot.turn_for(RIGHT, 180)
turn_to_heading#
turn_to_heading roda o robô de modo a ficar virado para uma direção específica de -359 a 359 graus. O robô irá rodar na direção mais curta para atingir a direção desejada.
A direção inicial é de 0 graus.
O projeto aguardará até que o robô termine de rodar antes de executar a próxima linha de código.
Usage:
robot.turn_to_heading(heading)
Parâmetros |
Descrição |
|---|---|
|
A direção para a qual o robô deve estar virado varia entre -359 a 359 graus. |
# Turn to face the cardinal directions.
robot.turn_to_heading(90)
wait(2, SECONDS)
robot.turn_to_heading(180)
wait(2, SECONDS)
robot.turn_to_heading(270)
wait(2, SECONDS)
robot.turn_to_heading(0)
wait(2, SECONDS)
stop#
stop pára o movimento do robô.
Usage:
robot.stop()
Parâmetros |
Descrição |
|---|---|
Este método não tem parâmetros. |
# Stop driving after 4 seconds.
robot.drive(FORWARD)
wait(4, SECONDS)
robot.stop()
Mutantes#
set_timeout#
O parâmetro set_timeout set_timeout define quantos segundos o robô tentará completar um movimento. Se o robô não conseguir completar dentro deste tempo, interromperá a tentativa e passará para a linha de código seguinte. Isto evita que o robô fique preso num movimento.
Usage:
robot.set_timeout(time, unit)
Parâmetros |
Descrição |
|---|---|
|
O tempo permitido para um movimento. Pode ser um número inteiro ou decimal. |
|
A unidade de tempo: |
# Turn right after driving for 1 second.
robot.set_timeout(1, SECONDS)
robot.drive_for(FORWARD, 1000, MM)
robot.turn_for(RIGHT, 90)
set_heading#
O comando set_heading altera a direção atual do robô para um novo valor de direção.
Por exemplo, se o robô se virou para a direita, definir a direção para 0 graus fará com que essa posição virada para a direita se torne os novos 0 graus.
Usage:
robot.set_heading(heading)
Parâmetros |
Descrição |
|---|---|
|
O valor da direção, em graus, a definir para o robô. |
# Face the new 0 degree heading.
robot.set_heading(90)
robot.turn_to_heading(0)
Getters#
is_stopped#
is_stopped retorna um Boolean que informa se o robô parou de se mover.
True— O robô está parado.False— O robô ainda se está a mover.
Usage:
robot.is_stopped()
Parâmetros |
Descrição |
|---|---|
Este método não tem parâmetros. |
# Glow blue after a crash.
robot.drive_until(FORWARD)
while True:
if robot.is_stopped():
robot.led.glow(BLUE)
else:
robot.led.glow(GREEN)
wait(0.05, SECONDS)
get_heading#
get_heading devolve a direção para a qual o robô está atualmente a apontar como um número inteiro de 0 a 359 graus.
A direção inicial do robô é de 0 graus.
Usage:
robot.get_heading()
Parâmetros |
Descrição |
|---|---|
Este método não tem parâmetros. |
# Display the heading after turning.
robot.turn_for(RIGHT, 450)
console.print(robot.get_heading())