Skip to main content

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‘.

Vista lateral do Wall Maze Playground com o Robô VR diretamente em frente a uma parede, mostrando que as paredes são tridimensionais e o robô pode colidir com elas.

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.
Caixa de nome do projeto no centro da barra de ferramentas VEXcode VR, destacada com uma caixa vermelha, à esquerda do botão Select Playground.

[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.

Uma unidade para bloco é mostrada com a seta à direita do bloco fechada e aberta. Na parte superior, uma unidade para bloco lê Drive forward para 200 mm. Na parte inferior, o mesmo bloco é estendido para ler Drive forward para 200 mm e não espere.

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.

O bloco Switch equivalente é mostrado com o comando drive for como um comando em espera e não em espera. Na parte superior, o comando Python no bloco Switch lê drivetrain dot drive_for (FORWARD, 200, MM). Na parte inferior, o mesmo comando é estendido para ler o ponto de transmissão drive _ for (FORWARD, 200, MM, wait = false).

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

    Um novo projeto VEXcode VR com um bloco When started com um bloco de unidade anexado e definido como forward.
  • Anexe um bloco [Aguarde até] abaixo do bloco [Drive].

    O mesmo projeto com um bloco de espera até ser adicionado à parte inferior da pilha. O parâmetro do bloco Aguarde até que esteja vazio.
  • 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é].

    O mesmo projeto com um bloco Bumper pressionado adicionado ao parâmetro do bloco Esperar até. O projeto agora diz Quando iniciado, siga em frente, aguarde até que o para-choque esquerdo seja pressionado.
  • Arraste um bloco [Stop driving] e adicione-o ao projeto.

    O mesmo projeto com um bloco de parada de condução adicionado abaixo do bloco de espera até. O projeto agora diz Quando iniciado, dirija para frente, aguarde até que o para-choque esquerdo seja pressionado e, em seguida, pare de dirigir.
  • 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.

    O projeto VEXcode VR desta lição foi dividido para mostrar o fluxo do projeto. O bloco When started é seguido pelo bloco drive forward. Uma seta dourada aponta para baixo a partir do bloco de avanço da unidade no bloco Aguarde até que o pára-choque esquerdo seja pressionado. À direita do bloco estão 2 setas vermelhas curvas indicando um movimento circular e as palavras "não pressionadas (falso)" mostrando o que acontece quando o robô avança e o interruptor do para-choque não é pressionado. Abaixo do bloco Espere até, uma seta verde apontando para baixo no bloco de parada de condução com as palavras "pressionadas (verdadeiro)" indica que o projeto se moverá para o bloco de parada de condução quando o interruptor do para-choque for pressionado.

    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.

    Projeto VEXcode VR a partir desta lição com uma caixa de chamada vermelha ao redor do bloco Esperar até, indicando que é um bloco de espera.

     

    Usando Blocos de Interruptor 

    Este é o bloco Switch que contém o comando [Wait until] com o <Bumper pressed>  Repórter booleano.

    Projeto VEXcode VR como acima, mas com o bloco Aguarde até que seja substituído por um bloco Switch. O comando Python no bloco Switch lê while not left_bumper.pressed(): na primeira linha. Em seguida, indentado abaixo do bloco Python lê wait (5, ms).

    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.