Skip to main content

Lição 2: Dirija para discos verdes e azuis

Dirija para discos verdes e azuis

  • O projeto anterior faz com que o Robô VR vire à direita quando o Sensor de Olho Frontal detecta um disco verde. Agora, crie um projeto em que o robô de RV conduza para quatro discos no Disk Maze Playground.
  • O objetivo é criar um padrão consistente em que o Robô VR vire à direita quando o Sensor de Olho Frontal detecta um disco verde e à esquerda quando o Sensor de Olho Frontal detecta um disco azul.

    Uma vista de cima para baixo do playground do Labirinto de Discos, com uma seta mostrando o caminho pretendido do robô de RV. O robô deve avançar a partir da plataforma de partida para alcançar o primeiro disco verde e virar à direita antes de virar à esquerda em dois discos azuis.
  • Adicione o bloco a seguir ao projeto existente para instruir o Robô VR a avançar depois de virar à direita.

    O VEXcode VR bloqueia o projeto anterior, com blocos Comment e Drive Forward adicionados. Todo o projeto agora lê When Started seguido por um Comentário que diz 'drive to first disk (green), then turn right'. Em seguida, Dirija para a frente,  aguarde até que o olho frontal detecte o verde e vire à direita por 90 graus. Em seguida, há um bloco de comentários que diz "unidade para o próximo disco (azul) e, em seguida, vire à esquerda". Por fim, siga em frente.
  • Adicione outro [Aguarde até] com o <Color sensing> bloco definido para detectar ‘azul‘, uma vez que o próximo disco que o Robô de RV encontrará é azul.

    O VEXcode VR bloqueia o projeto anterior, com um bloco Wait Until adicionado após o último bloco Drive Forward. Todo o projeto agora lê When Started seguido por um Comentário que diz 'drive to first disk (green), then turn right'. Em seguida, Dirija para a frente,  aguarde até que o olho frontal detecte o verde e vire à direita por 90 graus. Em seguida, há um bloco de comentários que diz "unidade para o próximo disco (azul) e, em seguida, vire à esquerda". Por fim, siga em frente e aguarde até que o Olho Frontal detecte o azul.
  • Adicione um bloco [Turn for] e defina o parâmetro para 'left'.

    O VEXcode VR bloqueia o projeto anterior, com um bloco Vire à esquerda por 90 graus adicionado após o último bloco Espere até. Todo o projeto agora lê When Started seguido por um Comentário que diz 'drive to first disk (green), then turn right'. Em seguida, Dirija para a frente,  aguarde até que o olho frontal detecte o verde e vire à direita por 90 graus. Em seguida, há um bloco de comentários que diz "unidade para o próximo disco (azul) e, em seguida, vire à esquerda". Próxima unidade para frente e aguarde até que o olho dianteiro detecte azul antes de virar à esquerda por 90 graus.
  • Execute o projeto para ver como o robô VR se move através do Disk Maze Playground.

    Uma vista de cima para baixo do playground do Labirinto de Discos, com uma seta mostrando o caminho pretendido do robô de RV. O robô deve avançar a partir da plataforma de partida para alcançar o primeiro disco verde e virar à direita antes de virar à esquerda no primeiro disco azul.
  • Observe que o Robô VR vira à direita quando o Sensor de Olho Frontal detecta um disco verde e vira à esquerda quando o Sensor de Olho Frontal detecta um disco azul.
  • Continue a construir este projeto para conduzir o Robô VR para mais dois discos no Disk Maze Playground usando o Sensor de Olho Frontal. Adicione os seguintes blocos para navegar o Robô VR para os próximos dois Discos e, em seguida, pare:

    O VEXcode VR bloqueia o snippet para adicionar ao final do nosso projeto para alcançar o terceiro e quarto discos azuis. Para dirigir para a terceira unidade de disco para frente, aguarde até que o olho frontal detecte azul e vire à esquerda por 90 graus. Ao lado da unidade para o quarto disco, Drive Forward, Wait Until Front Eye detecta azul e, em seguida, vire à esquerda por 90 graus. Por fim, pare de conduzir.
    O snippet de blocos VEXcode para alcançar o terceiro e quarto discos agora é adicionado à parte inferior do nosso projeto. Todo o projeto agora chega a quatro discos, primeiro um disco verde primeiro e depois três discos azuis. Use a seguinte seção de código para cada disco: Drive Forward, Waits Until Front Eye detecta a cor do disco, vire à direita 90 graus se verde e vire à esquerda 90 graus se azul. Repetindo essa seção de três blocos quatro vezes, podemos chegar a quatro discos, primeiro um disco verde virando à direita e depois três azuis virando à esquerda. Após estes 12 blocos e Comentários adicionais marcando cada seção, Pare de Dirigir.
  • Observe que há um padrão. Há uma série de blocos que se repetem três vezes no projeto. Esta secção do código pode ser condensada usando um bloco [Repetir].

    Agora vamos usar um bloco Repetir para simplificar e encurtar nosso código. Uma caixa vermelha destaca as três seções usadas para alcançar discos azuis, pois este é o mesmo código três vezes, podemos adicioná-lo a um Bloco de Repetição definido para repetir 3 vezes. Agora, o projeto lê When Started, Drive Forward e Wait Until Front Eye detecta verde antes de virar à direita por 90 graus. Em seguida, repita o código para alcançar um disco azul três vezes: Drive Forward, Wait Until Front Eye detecta azul e, em seguida, Vire à Esquerda por 90 graus. Depois de fechar o ciclo de repetição, pare de conduzir.
  • Abra o Disk Maze Playground, se ainda não estiver aberto, e execute o projeto.
  • Assista ao robô VR navegar para quatro discos no Disk Maze Playground.

    A vista de cima para baixo do playground do Disk Maze de antes, com uma seta mostrando o caminho pretendido do robô VR. O robô deve avançar a partir da plataforma de partida para alcançar o primeiro disco verde e virar à direita antes de virar à esquerda em dois discos azuis e parar no terceiro. Uma caixa vermelha indica que o robô para no terceiro disco azul.
  • Neste projeto, o Robô VR avança até que o Sensor do Olho Frontal detecte a cor verde.
    • O robô VR gira para a direita 90 graus e avança novamente até que a cor azul seja detectada.
    • O Robô VR então vira à esquerda e avança até que o Sensor do Olho Frontal detecte o azul. Assim que a cor azul for detectada, o robô VR vira à esquerda novamente.
    • Finalmente, o Robô VR avança até que o Sensor do Olho Frontal detecte o azul e pare.
  • Observe o padrão que quando o Sensor de Olho Frontal detecta verde, o Robô VR vira à direita. Quando o Sensor de Olho Frontal detecta azul, o Robô VR vira à esquerda neste projeto.

Usando Blocos de Interruptor

Até agora, você criou um projeto para conduzir para o disco verde e, em seguida, os três discos azuis.

A imagem abaixo mostra todo o projeto usando blocos VEXcode, com os comportamentos repetidos usados para conduzir para os três discos azuis em caixa vermelha.

O projeto de blocos VEXcode VR em que estamos trabalhando, com o bloco Repetir três vezes destacado em vermelho. O projeto lê When Started, Drive Forward and Wait Until Front Eye detecta verde antes de virar à direita por 90 graus. Em seguida, repita o código para alcançar um disco azul três vezes usando um bloco de repetição: Drive Forward, Wait Until Front Eye detecta azul e, em seguida, vire à esquerda por 90 graus. Depois de fechar o ciclo de repetição, pare de conduzir.

O projeto abaixo mostra esses mesmos blocos VEXcode convertidos em vários blocos Switch.

center project

Este último projeto mostra os mesmos comandos do bloco Switch convertidos em comandos Python dentro de um bloco Switch.

O VEXcode VR bloqueia o projeto para alcançar os quatro primeiros discos, mas com todo o loop Repeat convertido em blocos de switch Python. Todo o projeto lê Quando iniciado, dirija para a frente e aguarde até que o olho frontal detecte o verde antes de virar à direita por 90 graus. Em seguida, está o bloco de comutação contendo o seguinte código Python: 'for repeat_count in range(3):drivetrain.drive (FORWARD) while not front_eye.detect (BLUE): wait(5, MSEC) drivetrain.turn_for(LEFT, 90, DEGREES)'. Agora, fora do bloco do interruptor, finalmente pare de dirigir.

O comando for repeat_count in range(3): é o comando Python que informa ao robô que as próximas linhas de código recuadas devem ser repetidas três vezes. Observe que você deve incluir dois pontos (:) após o loop for. 

As linhas de código subsequentes são os comportamentos que serão repetidos. Observe que esses comportamentos são recuados com um padrão de 4 espaços. 

Além disso, note que a condicional inclui o comando wait (5, MSEC). No VEXcode VR, é sempre adicionado um comando wait com o ciclo for. O objetivo do comando wait é garantir que o VEXcode VR pode executar corretamente o projeto conforme pretendido, devido à natureza baseada na web da plataforma VEXcode VR. O comando wait nunca deve ser eliminado quando se utiliza um ciclo for, ou o seu projeto pode não funcionar como esperado. 

A linha, wait (5, MSEC) é recuada abaixo do comando while not front_eye.detect(BLUE) porque o Front Eye Sensor irá verificar a cor azul, pausando 5 MSEC entre cada verificação.

Selecione o botão Seguinte para continuar com o resto desta lição.