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

direction

A direção em que o robô se move: FORWARD ou REVERSE.

# 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

direction

A direção em que o robô se move: FORWARD ou REVERSE.

distance

A distância percorrida pelo robô. Pode ser um número inteiro ou decimal.

unit

A unidade de distância: MM (milímetros) ou STEPS (um quadrado num campo 123).

# 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

direction

A direção em que o robô se move: FORWARD ou REVERSE.

# 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

direction

Direção para a qual o robô vira: LEFT ou RIGHT.

# 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

direction

Direção para a qual o robô vira: LEFT ou RIGHT.

degrees

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

heading

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

time

O tempo permitido para um movimento. Pode ser um número inteiro ou decimal.

unit

A unidade de tempo: MSEC ou SECONDS.

# 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

heading

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