Macro#
Introdução#
As macros VEX AIM Python são blocos de código pré-construídos que podem ser arrastados para um projeto Python. Cada macro é um grupo de comandos Python que trabalham em conjunto para fazer com que o robô execute um comportamento mais complexo.
Estes não são métodos individuais chamados a partir do código. Em vez disso, cada macro é introduzida como uma sequência de código pronta a utilizar, que pode ser utilizada tal como está ou editada após ser adicionada a um projeto.
Nesta página, cada bloco de código Python mostra a sequência de código real que é introduzida quando esta macro é utilizada.
Segue abaixo a lista de todas as macros:
Emoções — Faça com que o robô atue de forma expressiva.
act happy— Faz com que o robô aja feliz.act sad— Faz o robô agir triste.act silly— Faz o robô agir como um parvo.act angry— Faz com que o robô aja com raiva.act excited— Faz com que o robô aja animado.
Visão IA (Bola Desportiva) — Vire-se para as bolas desportivas ou recolha-as.
turn right until sports ball— Vira à direita até ser detectada uma bola desportiva.turn left until sports ball— Vira à esquerda até ser detectada uma bola desportiva.get sports ball— Desloca o robô para recolher uma bola desportiva.
Visão de IA (Barril Laranja) — Vire-se em direção aos barris laranja ou recolha-os.
turn right until orange barrel— Vira à direita até detectar um barril laranja.turn left until orange barrel— Vira à esquerda até detectar um barril laranja.get orange barrel— Desloca o robô para recolher um barril laranja.
Visão de IA (Barril Azul) — Vire-se em direção aos barris azuis ou recolha-os.
turn right until blue barrel— Vira à direita até detectar um barril azul.turn left until blue barrel— Vira à esquerda até detectar um barril azul.get blue barrel— Desloca o robô para recolher um barril azul.
Visão de IA (Robô AIM) — Vire-se ou mova-se em direção a outros Robôs AIM.
turn right until AIM robot— Vira à direita até que seja detectado outro robô AIM.turn left until AIM robot— Vira à esquerda até que seja detectado outro robô AIM.move to AIM robot— Move-se em direção a outro robô AIM.
Visão de IA (AprilTag) — Vire-se ou mova-se em direção aos AprilTags.
turn right until AprilTag— Vira à direita até ser detectado um AprilTag.turn left until AprilTag— Vira à esquerda até ser detectado um AprilTag.move to AprilTag— Moves toward an AprilTag.
Emoções#
act happy#
Esta macro faz com que o robô aja de forma feliz, exibindo rostos sorridentes, reproduzindo sons alegres, alterando as luzes LED e movendo-se para a frente e para trás. Utilize-a quando o robô precisar de responder de forma alegre ou positiva.
O código abaixo mostra a sequência Python que é adicionada ao seu projeto quando esta macro é arrastada a partir da Caixa de Ferramentas. Pode utilizar a sequência tal como está ou editá-la depois de a adicionar.
# act happy
robot.screen.show_emoji(HAPPY)
wait(.5,SECONDS)
robot.sound.play(ACT_HAPPY)
wait(115, MSEC)
robot.screen.show_emoji(HAPPY, LOOK_RIGHT)
robot.led.on(ALL_LEDS, YELLOW)
robot.turn_for(RIGHT, 4, 100)
robot.led.on(ALL_LEDS, WHITE)
robot.screen.show_emoji(HAPPY, LOOK_LEFT)
robot.turn_for(RIGHT, -8, 100)
robot.led.on(ALL_LEDS, YELLOW)
robot.screen.show_emoji(HAPPY, LOOK_RIGHT)
robot.turn_for(RIGHT, 4, 100)
wait(100,MSEC)
for i in range(3):
robot.screen.show_emoji(QUIET)
robot.led.on(ALL_LEDS, WHITE)
robot.move_for(1,-90)
robot.screen.show_emoji(HAPPY)
robot.led.on(ALL_LEDS, YELLOW)
robot.move_for(1,90)
robot.stop_all_movement()
robot.led.off(ALL_LEDS)
wait(.5,SECONDS)
act sad#
Esta macro faz com que o robô atue de forma triste, exibindo expressões faciais tristes, reproduzindo um som triste, diminuindo a intensidade dos LEDs e movendo-se lentamente em diferentes direções. Utilize-a quando o robô necessitar de demonstrar uma reação de deceção ou falta de energia.
O código abaixo mostra a sequência Python que é adicionada ao seu projeto quando esta macro é arrastada a partir da Caixa de Ferramentas. Pode utilizar a sequência tal como está ou editá-la depois de a adicionar.
# act sad
robot.screen.show_emoji(SAD)
wait(.5,SECONDS)
robot.sound.play(ACT_SAD)
wait(115, MSEC)
robot.led.on(ALL_LEDS, Color(0, 0, 250))
robot.screen.show_emoji(SAD, LOOK_RIGHT)
robot.move_for(11, 135, 70)
robot.led.on(ALL_LEDS, Color(0, 0, 100))
robot.screen.show_emoji(SAD, LOOK_FORWARD)
robot.move_for(11, 315, 70)
robot.led.on(ALL_LEDS, Color(0, 0, 50))
robot.screen.show_emoji(SAD, LOOK_LEFT)
robot.move_for(11, 225, 70)
robot.led.on(ALL_LEDS, Color(0, 0, 10))
robot.screen.show_emoji(SAD, LOOK_FORWARD)
robot.move_for(11, 45, 70)
wait(.5,SECONDS)
robot.led.off(ALL_LEDS)
act silly#
Esta macro faz com que o robô atue de forma engraçada, rodando, mudando de expressão facial e piscando LEDs em diferentes cores. Utilize-a quando o robô precisar de ter uma reação divertida ou surpreendente.
O código abaixo mostra a sequência Python que é adicionada ao seu projeto quando esta macro é arrastada a partir da Caixa de Ferramentas. Pode utilizar a sequência tal como está ou editá-la depois de a adicionar.
# act silly
robot.screen.show_emoji(SILLY)
wait(.5,SECONDS)
robot.sound.play(ACT_SILLY)
wait(115,MSEC)
robot.turn_for(RIGHT, 360, 100, wait=False)
face_list = [SILLY, HAPPY, EXCITED, PROUD, THRILLED, LAUGHING]
colors = [BLUE, CYAN, GREEN, ORANGE, PURPLE, RED, WHITE, YELLOW]
while robot.is_turn_active():
robot.screen.show_emoji(SILLY)
robot.led.on(ALL_LEDS, random.choice(colors))
wait(110,MSEC)
robot.screen.show_emoji(random.choice(face_list))
wait(110,MSEC)
robot.screen.show_emoji(SILLY)
robot.led.off(ALL_LEDS)
wait(.5,SECONDS)
act angry#
Esta macro faz com que o robô atue de forma irritada, exibindo expressões faciais de raiva, emitindo um som de raiva, acendendo os LEDs a vermelho e realizando movimentos bruscos. Utilize-a quando o robô necessitar de demonstrar uma reação de frustração ou alerta.
O código abaixo mostra a sequência Python que é adicionada ao seu projeto quando esta macro é arrastada a partir da Caixa de Ferramentas. Pode utilizar a sequência tal como está ou editá-la depois de a adicionar.
# act angry
robot.screen.show_emoji(ANGRY)
wait(.5,SECONDS)
robot.sound.play(ACT_ANGRY)
wait(115,MSEC)
robot.led.on(ALL_LEDS, RED)
robot.move_for(25, 0, 50)
wait(50,MSEC)
for i in range(5):
robot.screen.show_emoji(ANNOYED)
robot.move_for(5, 180, 50)
robot.screen.show_emoji(ANGRY)
wait(50,MSEC)
wait(.5,SECONDS)
robot.led.off(ALL_LEDS)
act excited#
Esta macro faz com que o robô demonstre entusiasmo, exibindo uma expressão facial animada, emitindo um som de excitação, movendo-se rapidamente de um lado para o outro e piscando LEDs laranja. Utilize-a quando o robô precisar de celebrar ou reagir com muita energia.
O código abaixo mostra a sequência Python que é adicionada ao seu projeto quando esta macro é arrastada a partir da Caixa de Ferramentas. Pode utilizar a sequência tal como está ou editá-la depois de a adicionar.
# act excited
robot.screen.show_emoji(EXCITED)
wait(.5,SECONDS)
robot.sound.play(ACT_EXCITED)
wait(115, MSEC)
for angle in [3,-3,2,-2,2,-2,2,-2,1,-1]:
if angle > 0:
robot.screen.show_emoji(EXCITED, LOOK_RIGHT)
robot.led.on(LED4, ORANGE)
robot.led.on(LED5, ORANGE)
robot.led.on(LED6, ORANGE)
robot.led.off(LED1)
else:
robot.screen.show_emoji(EXCITED, LOOK_LEFT)
robot.led.on(LED1, ORANGE)
robot.led.on(LED2, ORANGE)
robot.led.on(LED3, ORANGE)
robot.led.off(LED6)
robot.turn_for(RIGHT, angle)
robot.led.off(ALL_LEDS)
robot.screen.show_emoji(EXCITED, LOOK_FORWARD)
wait(.5,SECONDS)
Visão de IA (Bola Desportiva)#
turn right until sports ball#
Esta macro faz com que o robô vire para a direita até que o sensor de visão com IA detete uma bola desportiva, e depois vira-se na direção do objeto detetado. Utilize-a quando o robô precisar de procurar uma bola desportiva antes de se mover em direção a ela ou de a recolher.
Nota: Se o robô tiver dificuldade em detetar objetos, tente diminuir a velocidade de rotação do robô com set_turn_velocity.
O código abaixo mostra a sequência Python que é adicionada ao seu projeto quando esta macro é arrastada a partir da Caixa de Ferramentas. Pode utilizar a sequência tal como está ou editá-la depois de a adicionar.
# Turn right until sports ball is detected
robot.turn(RIGHT)
while True:
vision_data = robot.vision.get_data(SPORTS_BALL)
if vision_data[0].exists:
# Turn to the object by adding your current heading and the vision bearing offset
robot.turn_to(robot.inertial.get_heading() + vision_data[0].bearing)
break
wait(20, MSEC)
turn left until sports ball#
Esta macro faz com que o robô vire para a esquerda até que o sensor de visão com IA detete uma bola desportiva, e depois vira-se na direção do objeto detetado. Utilize-a quando o robô precisar de procurar uma bola desportiva antes de se mover em direção a ela ou de a recolher.
Nota: Se o robô tiver dificuldade em detetar objetos, tente diminuir a velocidade de rotação do robô com set_turn_velocity.
O código abaixo mostra a sequência Python que é adicionada ao seu projeto quando esta macro é arrastada a partir da Caixa de Ferramentas. Pode utilizar a sequência tal como está ou editá-la depois de a adicionar.
# Turn left until sports ball is detected
robot.turn(LEFT)
while True:
vision_data = robot.vision.get_data(SPORTS_BALL)
if vision_data[0].exists:
# Turn to the object by adding your current heading and the vision bearing offset
robot.turn_to(robot.inertial.get_heading() + vision_data[0].bearing)
break
wait(20, MSEC)
get sports ball#
Esta macro move o robô em direção a uma bola desportiva detetada até que este a recolha. Utilize-a depois de o robô avistar uma bola desportiva ou depois de utilizar uma macro de rotação até encontrar uma.
Nota: Se o robô tiver dificuldade em detetar objetos, tente diminuir as velocidades de movimento e de rotação do robô com set_move_velocity e set_turn_velocity.
O código abaixo mostra a sequência Python que é adicionada ao seu projeto quando esta macro é arrastada a partir da Caixa de Ferramentas. Pode utilizar a sequência tal como está ou editá-la depois de a adicionar.
# Get sports ball
while True:
vision_data = robot.vision.get_data(SPORTS_BALL)
if vision_data[0].exists:
if robot.has_sports_ball():
robot.stop_all_movement()
break
else:
robot.move_at(vision_data[0].bearing)
else:
robot.move_at(0)
wait(20, MSEC)
Visão de IA (Barril Laranja)#
turn right until orange barrel#
Esta macro faz com que o robô vire para a direita até que o sensor de visão com IA detete um barril laranja, e depois vira na direção do objeto detetado. Usa-a quando o robô precisar de procurar um barril laranja antes de te moveres em direção a ele ou de o recolheres.
Nota: Se o robô tiver dificuldade em detetar objetos, tente diminuir a velocidade de rotação do robô com set_turn_velocity.
O código abaixo mostra a sequência Python que é adicionada ao seu projeto quando esta macro é arrastada a partir da Caixa de Ferramentas. Pode utilizar a sequência tal como está ou editá-la depois de a adicionar.
# Turn right until orange barrel is detected
robot.turn(RIGHT)
while True:
vision_data = robot.vision.get_data(ORANGE_BARREL)
if vision_data[0].exists:
# Turn to the object by adding your current heading and the vision bearing offset
robot.turn_to(robot.inertial.get_heading() + vision_data[0].bearing)
break
wait(20, MSEC)
turn left until orange barrel#
Esta macro vira o robô para a esquerda até que o sensor de visão com IA detete um barril laranja, e depois vira-se na direção do objeto detetado. Usa-a quando o robô precisar de procurar um barril laranja antes de te moveres em direção a ele ou de o recolheres.
Nota: Se o robô tiver dificuldade em detetar objetos, tente diminuir a velocidade de rotação do robô com set_turn_velocity.
O código abaixo mostra a sequência Python que é adicionada ao seu projeto quando esta macro é arrastada a partir da Caixa de Ferramentas. Pode utilizar a sequência tal como está ou editá-la depois de a adicionar.
# Turn left until orange barrel is detected
robot.turn(LEFT)
while True:
vision_data = robot.vision.get_data(ORANGE_BARREL)
if vision_data[0].exists:
# Turn to the object by adding your current heading and the vision bearing offset
robot.turn_to(robot.inertial.get_heading() + vision_data[0].bearing)
break
wait(20, MSEC)
get orange barrel#
Esta macro move o robô em direção a um barril laranja detetado até que este o recolha. Usa-a depois de o robô avistar um barril laranja ou depois de usares uma macro de “rodar até encontrar um barril laranja” para localizar um.
Nota: Se o robô tiver dificuldade em detetar objetos, tente diminuir as velocidades de movimento e de rotação do robô com set_move_velocity e set_turn_velocity.
O código abaixo mostra a sequência Python que é adicionada ao seu projeto quando esta macro é arrastada a partir da Caixa de Ferramentas. Pode utilizar a sequência tal como está ou editá-la depois de a adicionar.
# Get orange barrel
while True:
vision_data = robot.vision.get_data(ORANGE_BARREL)
if vision_data[0].exists:
if robot.has_orange_barrel():
robot.stop_all_movement()
break
else:
robot.move_at(vision_data[0].bearing)
else:
robot.move_at(0)
wait(20, MSEC)
Visão de IA (Barril Azul)#
turn right until blue barrel#
Esta macro vira o robô para a direita até que o sensor de visão com IA detete um barril azul, e depois vira na direção do objeto detetado. Usa-a quando o robô precisar de procurar um barril azul antes de te moveres em direção a ele ou de o recolheres.
Nota: Se o robô tiver dificuldade em detetar objetos, tente diminuir a velocidade de rotação do robô com set_turn_velocity.
O código abaixo mostra a sequência Python que é adicionada ao seu projeto quando esta macro é arrastada a partir da Caixa de Ferramentas. Pode utilizar a sequência tal como está ou editá-la depois de a adicionar.
# Turn right until blue barrel is detected
robot.turn(RIGHT)
while True:
vision_data = robot.vision.get_data(BLUE_BARREL)
if vision_data[0].exists:
# Turn to the object by adding your current heading and the vision bearing offset
robot.turn_to(robot.inertial.get_heading() + vision_data[0].bearing)
break
wait(20, MSEC)
turn left until blue barrel#
Esta macro vira o robô para a esquerda até que o sensor de visão com IA detete um barril azul, e depois vira-se na direção do objeto detetado. Usa-a quando o robô precisar de procurar um barril azul antes de te moveres em direção a ele ou de o recolheres.
Nota: Se o robô tiver dificuldade em detetar objetos, tente diminuir a velocidade de rotação do robô com set_turn_velocity.
O código abaixo mostra a sequência Python que é adicionada ao seu projeto quando esta macro é arrastada a partir da Caixa de Ferramentas. Pode utilizar a sequência tal como está ou editá-la depois de a adicionar.
# Turn left until blue barrel is detected
robot.turn(LEFT)
while True:
vision_data = robot.vision.get_data(BLUE_BARREL)
if vision_data[0].exists:
# Turn to the object by adding your current heading and the vision bearing offset
robot.turn_to(robot.inertial.get_heading() + vision_data[0].bearing)
break
wait(20, MSEC)
get blue barrel#
Esta macro move o robô em direção a um barril azul detetado até que este o recolha. Usa-a depois de o robô avistar um barril azul ou depois de usares uma macro de virar até encontrares um barril azul.
Nota: Se o robô tiver dificuldade em detetar objetos, tente diminuir as velocidades de movimento e de rotação do robô com set_move_velocity e set_turn_velocity.
O código abaixo mostra a sequência Python que é adicionada ao seu projeto quando esta macro é arrastada a partir da Caixa de Ferramentas. Pode utilizar a sequência tal como está ou editá-la depois de a adicionar.
# Get blue barrel
while True:
vision_data = robot.vision.get_data(BLUE_BARREL)
if vision_data[0].exists:
if robot.has_blue_barrel():
robot.stop_all_movement()
break
else:
robot.move_at(vision_data[0].bearing)
else:
robot.move_at(0)
wait(20, MSEC)
Visão de IA (Robô AIM)#
turn right until AIM robot#
Esta macro vira o robô para a direita até que o sensor de visão com IA detete outro robô VEX AIM Coding Robot, e depois vira na sua direção. Utilize-a quando o robô precisar de procurar outro robô antes de se mover na sua direção.
Nota: Se o robô tiver dificuldade em detetar objetos, tente diminuir a velocidade de rotação do robô com set_turn_velocity.
O código abaixo mostra a sequência Python que é adicionada ao seu projeto quando esta macro é arrastada a partir da Caixa de Ferramentas. Pode utilizar a sequência tal como está ou editá-la depois de a adicionar.
# Turn right until AIM robot is detected
robot.turn(RIGHT)
while True:
vision_data = robot.vision.get_data(AIM_ROBOT)
if vision_data[0].exists:
# Turn to the object by adding your current heading and the vision bearing offset
robot.turn_to(robot.inertial.get_heading() + vision_data[0].bearing)
break
wait(20, MSEC)
turn left until AIM robot#
Esta macro vira o robô para a esquerda até que o sensor de visão com IA detete outro robô VEX AIM Coding Robot, e depois vira na sua direção. Utilize-a quando o robô precisar de procurar outro robô antes de se mover na sua direção.
Nota: Se o robô tiver dificuldade em detetar objetos, tente diminuir a velocidade de rotação do robô com set_turn_velocity.
O código abaixo mostra a sequência Python que é adicionada ao seu projeto quando esta macro é arrastada a partir da Caixa de Ferramentas. Pode utilizar a sequência tal como está ou editá-la depois de a adicionar.
# Turn left until AIM robot is detected
robot.turn(LEFT)
while True:
vision_data = robot.vision.get_data(AIM_ROBOT)
if vision_data[0].exists:
# Turn to the object by adding your current heading and the vision bearing offset
robot.turn_to(robot.inertial.get_heading() + vision_data[0].bearing)
break
wait(20, MSEC)
move to AIM robot#
Esta macro move o robô em direção a outro robô VEX AIM Coding Robot até que este esteja suficientemente perto para parar. Utilize-a depois de o robô conseguir ver outro robô ou depois de utilizar uma macro de virar até encontrar um robô AIM.
Nota: Se o robô tiver dificuldade em detetar objetos, tente diminuir as velocidades de movimento e de rotação do robô com set_move_velocity e set_turn_velocity.
O código abaixo mostra a sequência Python que é adicionada ao seu projeto quando esta macro é arrastada a partir da Caixa de Ferramentas. Pode utilizar a sequência tal como está ou editá-la depois de a adicionar.
# Move to AIM robot
while True:
vision_data = robot.vision.get_data(AIM_ROBOT)
if vision_data[0].exists:
if vision_data[0].width >= 140:
robot.stop_all_movement()
break
else:
robot.move_at(vision_data[0].bearing)
else:
robot.move_at(0)
wait(20, MSEC)
Visão de IA (AprilTag)#
turn right until AprilTag#
Esta macro vira o robô para a direita até que o Sensor de Visão de IA detete o ID 0 do AprilTag, depois vira em direção ao AprilTag detetado. Usa-a quando o robô precisar de procurar um AprilTag antes de te moveres em direção a ele. Para alterar qual o AprilTag que o robô irá procurar, substitua 0 em TAG0 por qualquer número de 0 a 37 (os AprilTags de 5 a 37 podem ser utilizados com AprilTags impressos a partir de AIM Printables.)
Nota: Se o robô tiver dificuldade em detetar objetos, tente diminuir a velocidade de rotação do robô com set_turn_velocity.
O código abaixo mostra a sequência Python que é adicionada ao seu projeto quando esta macro é arrastada a partir da Caixa de Ferramentas. Pode utilizar a sequência tal como está ou editá-la depois de a adicionar.
# Turn right until AprilTag ID 0 is detected
robot.turn(RIGHT)
while True:
vision_data = robot.vision.get_data(TAG0)
if vision_data[0].exists:
# Turn to the object by adding your current heading and the vision bearing offset
robot.turn_to(robot.inertial.get_heading() + vision_data[0].bearing)
break
wait(20, MSEC)
turn left until AprilTag#
Esta macro vira o robô para a esquerda até que o Sensor de Visão de IA detete o ID 0 do AprilTag, depois vira em direção ao AprilTag detetado. Usa-a quando o robô precisar de procurar um AprilTag antes de te moveres em direção a ele. Para alterar qual o AprilTag que o robô irá procurar, substitua 0 em TAG0 por qualquer número de 0 a 37 (os AprilTags de 5 a 37 podem ser utilizados com AprilTags impressos a partir de AIM Printables.)
Nota: Se o robô tiver dificuldade em detetar objetos, tente diminuir a velocidade de rotação do robô com set_turn_velocity.
O código abaixo mostra a sequência Python que é adicionada ao seu projeto quando esta macro é arrastada a partir da Caixa de Ferramentas. Pode utilizar a sequência tal como está ou editá-la depois de a adicionar.
# Turn left until AprilTag ID 0 is detected
robot.turn(LEFT)
while True:
vision_data = robot.vision.get_data(TAG0)
if vision_data[0].exists:
# Turn to the object by adding your current heading and the vision bearing offset
robot.turn_to(robot.inertial.get_heading() + vision_data[0].bearing)
break
wait(20, MSEC)
move to AprilTag#
Esta macro move o robô em direção ao AprilTag ID 0 até que este esteja suficientemente perto para parar. Usa-a depois de o robô conseguir ver um AprilTag ou depois de usares uma macro de virar até encontrares um AprilTag. Para alterar para que AprilTag o robô se irá mover, substitua 0 em TAG0 por qualquer número de 0 a 37 (os AprilTags de 5 a 37 podem ser utilizados com AprilTags impressos a partir de AIM Printables.)
Nota: Se o robô tiver dificuldade em detetar objetos, tente diminuir as velocidades de movimento e de rotação do robô com set_move_velocity e set_turn_velocity.
O código abaixo mostra a sequência Python que é adicionada ao seu projeto quando esta macro é arrastada a partir da Caixa de Ferramentas. Pode utilizar a sequência tal como está ou editá-la depois de a adicionar.
# Move to AprilTag ID 0
while True:
vision_data = robot.vision.get_data(TAG0)
if vision_data[0].exists:
if vision_data[0].width >= 60:
robot.stop_all_movement()
break
else:
robot.move_at(vision_data[0].bearing)
else:
robot.move_at(0)
wait(20, MSEC)