Lição 2: Usando o bloco [Aguarde até]
Nesta lição, você criará um projeto usando o bloco Bumper Sensor e [Wait until]. No mini-desafio, você aplicará essas habilidades para navegar desde o início do Labirinto da Parede até a letra ‘A‘.

Resultados de Aprendizagem
- Identifique que os blocos que não estão em espera têm a pilha continuada, mesmo que o comportamento do bloco ainda não esteja concluído.
- Identifique que um bloco em espera pausa a pilha até que o comportamento desse bloco tenha sido concluído.
- Identificar que o destaque da execução do projeto visualiza bloqueios de espera vs não espera.
- Identifique que o bloco [Aguarde até] é um bloco de controle que aceita valores booleanos.
- Identifique que o bloco [Aguarde até] verificará repetidamente uma condição booleana e não se moverá para o próximo bloco até que a condição seja relatada como VERDADEIRA.
- Identifique se o bloco [Wait until] é usado com um bloco sem espera (por exemplo, Drive) para verificar a condição do sensor.
- Identifique se o <Pressing bumper> bloco relata um valor VERDADEIRO ou FALSO em um bloco [Aguarde até].
- Identifique como os blocos [Drive for] e [Turn for] são blocos especiais que podem estar aguardando ou não.
- Descreva como criar um projeto que tenha uma unidade de robô VR para a frente até que o sensor de pára-choques seja pressionado.
Nomeie e guarde o projeto
- Inicie um novo projeto no VEXcode VR e nomeie o projeto Unit4Lesson2.

[Aguarde até] Bloqueios
O bloco [Wait until] é um bloco Control que aceita condições booleanas. Os blocos [Aguarde até] verificam repetidamente uma condição booleana e controlam o fluxo do projeto. Um projeto não se moverá para o próximo bloco na pilha até que a condição no bloco [Aguarde até] seja relatada como VERDADEIRA. Os blocos [Wait until] são usados em conjunto com blocos sem espera, como [Drive] ou [Turn].
Para sua informação
Blocos de não espera e de espera determinam quando o próximo bloco inicia um comportamento. Blocos de espera, como [Drive for] e [Turn for], completam seus comportamentos antes de passar para o próximo bloco na pilha. Blocos sem espera, como [Drive] e [Turn], continuam a se mover para o próximo bloco na pilha, mesmo que o comportamento do bloco sem espera não esteja completo.
Certos blocos, como [Drive for] e [Turn for], podem estar em espera ou não. Selecionar a seta no bloco transformará o bloco de espera num bloco sem espera.

Usando Blocos de Interruptor
O bloco sem espera Switch adiciona um parâmetro "wait=False" no final do bloco. "wait=False" é o comando Python que diz ao bloco para não esperar e continuar a se mover para os próximos blocos na pilha.

-
Arraste o bloco sem espera [Drive] para o espaço de trabalho.

-
Anexe um bloco [Aguarde até] abaixo do bloco [Drive].

-
O bloco [Aguarde até] aceita condições booleanas. Este projeto usará o Bumper Sensor para percorrer o Wall Maze Playground. Arraste o bloco <Pressing bumper> Booleano para o bloco [Aguarde até].

-
Arraste um bloco [Stop driving] e adicione-o ao projeto.

- Inicie o Wall Maze Playground, se ainda não estiver aberto, e execute o projeto.
- Observe o robô VR dirigir desde o início do labirinto de parede e pare quando o sensor de pára-choques for pressionado pela parede.
-
O bloco [Drive] permite que o robô VR continue avançando enquanto verifica a condição do sensor do para-choque com o <Pressing bumper> bloco. Uma vez que os <Pressing bumper> relatórios SEJAM VERDADEIROS, o Robô VR se moverá para o próximo bloco na pilha e parará de dirigir.

Para sua informação
Para acompanhar uma visualização de blocos de espera versus não espera, observe a função de realce de execução de código no VEXcode VR. No início deste projeto, o destaque verde aparecerá ao redor do bloco [Aguarde até] até que a condição seja atendida. Isso ocorre porque o bloco [Aguarde até] é um bloco de espera. O realce verde parecerá ignorar os blocos que não estão em espera porque esses comandos são executados rapidamente.

Usando Blocos de Interruptor
Este é o bloco Switch que contém o comando [Wait until] com o <Bumper pressed>
Repórter booleano. 
while not left_bumper.pressed(): é o comando Python que verifica se o para-choque esquerdo está sendo pressionado no momento. wait (5, MSEC) é um comando Python que pausa a execução da verificação por 5 milissegundos (MS), então o projeto verifica se o para-choque esquerdo é pressionado a cada 5 MS. Essa linha de código é recuada abaixo da primeira linha de código porque esse comando é o comportamento que se repetirá até que a condição (neste caso, o para-choque esquerdo pressionado) seja atendida. No VEXcode VR, é sempre adicionado um comando wait com um ciclo condicional . O objetivo do comando wait é garantir que o VEXcode VR possa 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 condicional , porque o seu projeto pode não funcionar como esperado. Assim que o pára-choques esquerdo for pressionado, o robô irá parar de conduzir.
Selecione o botão Seguinte para continuar com o resto desta lição.