Skip to main content

Lição 3: Fluxo do Projeto com Vários Loops While

Agora que você criou um projeto de texto para navegar o Robô de RV até a letra ‘A’ no Wall Maze Playground, expandirá suas habilidades usando condicionais e valores de sensores. Nesta lição, você navegará pelo robô VR até o número ‘2‘ no Wall Maze Playground e, em seguida, explorará por que comandos adicionais são necessários para dirigir até a letra ‘B.’ No mini-desafio, você aplicará essas habilidades para navegar desde o início do Labirinto da Parede até o número ‘3’.

Uma vista de cima para baixo do playground do Labirinto da Parede com o Robô VR começando na seta verde no centro inferior do playground. O número 2 é destacado em uma caixa vermelha e está posicionado no centro do quadrante inferior esquerdo do labirinto, mais à esquerda além da letra A. O número 2 em um canto criado por três paredes que o cercam.

Resultados de Aprendizagem

  • Descreva o fluxo do programa num projeto que tenha uma unidade de robô VR para a frente até que o sensor do pára-choques seja pressionado.

Mudar o nome do projeto

  • Se o projeto da lição anterior ainda não estiver carregado, carregue o projeto Unit4Lesson2.
  • Renomeie o projeto Unit4Lesson3.A barra de ferramentas VEXcode VR mostra a Unidade 4 Lição 3 como o nome do projeto. O nome do projeto é destacado com uma caixa vermelha.

     

 

Fluxo do Projeto a Conduzir à Letra ‘A’

Na lição anterior, o robô de RV dirigiu até a letra ‘A’ no Wall Maze Playground. Vamos detalhar o fluxo do projeto enquanto nos preparamos para navegar para um novo local no Labirinto da Parede.

Uma vista de cima para baixo do Wall Maze Playground com o robô VR no local de partida na parte inferior central do Playground. A letra A está diretamente à esquerda do robô, separada por uma parede curta.
  • Para entender melhor o fluxo do projeto para dirigir com a letra ‘A’ no Wall Maze Playground, comece modificando o seu projeto anterior ou crie um novo projeto para corresponder a este projeto base.

    def main():
    	while not left_bumper.pressed ():
    		drivetrain.drive (FORWARD)
    		wait(5, MSEC)
    	
    	drivetrain.turn_for (LEFT, 90, DEGREES)
    	
    	while not left_bumper.pressed ():
    		drivetrain.drive (FORWARD)
    		wait(5, MSEC)
    	
    	drivetrain.turn_for (LEFT, 90, DEGREES)
    
    	while not left_bumper.pressed ():
    		drivetrain.drive (FORWARD)
    		wait(5, MSEC)
    	
    	drivetrain.stop()
  • Quando um projeto utiliza um ciclo enquanto com uma condição e não , o fluxo do programa do projeto ainda segue a mesma sequência de cima para baixo. O ciclo while permite que o fluxo do programa “pause” num determinado ponto, enquanto uma condição é satisfeita. O operador not  permite que o projeto permaneça no ciclo até que a condição seja reportada como False. Em seguida, o projeto fluirá para o próximo comando fora do loop. Uma condição booleana, como o Amortecedor Esquerdo sendo pressionado, relatará um valor Verdadeiro ou Falso. Neste código para conduzir o Robô VR à letra ‘A’, o Robô VR avançará até que a condição Booleana do Para-choque Esquerdo sendo pressionada seja Verdadeira.
    O fluxo do projeto para conduzir à letra 'A' seria assim:Um diagrama de fluxo do projeto descrevendo o fluxo do projeto acima para navegar até a letra A, que é mostrada à esquerda. À direita, as setas indicam como o projeto flui. Primeiro, uma seta cíclica vermelha ilustra que, embora o para-choque não seja pressionado, a condição do loop while retorna falso, de modo que o robô avança. Uma seta verde para baixo a seguir ilustra que quando o para-choque é pressionado, a condição é relatada como verdadeira para que o projeto saia desse loop e o robô vire à esquerda 90 graus. Esta sequência é repetida para cada ciclo no projeto.

O comportamento do VR Robot mostra como cada ciclo while está a ser executado. Dividido ao lado do movimento do Robô de RV, podemos ver claramente para onde o Robô de RV se dirigiu depois que cada loop no projeto foi executado.À esquerda, mostra o código Python que contém três loops while sequenciais, cada um instruindo o robô a avançar até que o para-choque esquerdo seja pressionado. Uma vez que o para-choque é pressionado em cada loop, o robô executa uma ação específica.  No primeiro loop, o robô avança até que o para-choque seja pressionado e, em seguida, vira para a esquerda em 90 graus. A imagem à direita mostra a posição do robô em um labirinto após esta ação, marcada por um círculo amarelo.  No segundo loop, o robô dirige novamente para a frente até que o para-choque seja pressionado e, em seguida, vira para a esquerda em 90 graus. A segunda imagem mostra a posição atualizada do robô no labirinto após esta curva.  No terceiro e último loop, o robô avança até que o para-choque seja pressionado. Quando o para-choque é pressionado, o robô para de se mover. A imagem final mostra a posição de parada do robô dentro do labirinto, novamente destacada por um círculo amarelo.

 

Dirija para o número '2'

Nesta Lição, o projeto será editado para que o Robô VR dirija para o número ‘2’ no Wall Maze Playground!

Uma vista de cima para baixo do playground do Labirinto da Parede com o Robô VR começando na seta verde no centro inferior do playground. O número 2 é destacado em uma caixa vermelha e está posicionado no centro do quadrante inferior esquerdo do labirinto, mais à esquerda além da letra A. O número 2 em um canto criado por três paredes que o cercam.
  • O projeto da Lição 2 tem o Robô VR virando à esquerda para dirigir à letra ‘A’. Para navegar até o número ‘2‘, o Robô VR terá que virar à direita, dirigir para frente e depois virar à esquerda.

    Uma vista de cima para baixo do Wall Maze Playground, onde o robô VR está posicionado acima do marcador A, voltado para a parede esquerda. Uma seta vermelha aponta para A e três setas verdes mostram o caminho pretendido para o número 2. As setas verdes apontam para cima em direção à parede oposta a A, depois para a esquerda em direção à próxima parede à esquerda do número 2, depois para baixo no canto que contém o número 2.
  • Mude a direção do segundo comando turn_for para a direita em vez de para a esquerda. O seu projeto deve agora ter este aspeto:

    def main():
    	while not left_bumper.pressed ():
    		drivetrain.drive (FORWARD)
    		wait(5, MSEC)
    	
    	drivetrain.turn_for (LEFT, 90, DEGREES)
    	
    	while not left_bumper.pressed ():
    		drivetrain.drive (FORWARD)
    		wait(5, MSEC)
    	
    	drivetrain.turn_for (RIGHT, 90, DEGREES)
    
    	while not left_bumper.pressed ():
    		drivetrain.drive (FORWARD)
    		wait(5, MSEC)
    	
    	drivetrain.stop()
  • Inicie o Wall Maze Playground, se ainda não estiver aberto, e execute o projeto.
  • Veja o robô VR começar a conduzir até ao número "2", mas pare numa parede. Assim, o Robô VR precisa virar à esquerda assim que pressionar contra a parede em vez de parar.

    Uma vista de cima para baixo do parque infantil Wall Maze com o robô VR voltado para a parede oposta à letra A, apontando para cima.
  • Selecione o botão "Reset" para reiniciar o Playground e mover o Robô VR de volta para a posição inicial.O Wall Maze Playground mostrando toda a interface do playground. O botão de reinicialização no canto inferior esquerdo da interface do playground é destacado com uma caixa vermelha.

     

  • Edite o código removendo o comando stop e substituindo-o pelos seguintes comandos para levar o robô VR ao número '2'.

    def main():
    	while not left_bumper.pressed ():
    		drivetrain.drive (FORWARD)
    		wait(5, MSEC)
    	
    	drivetrain.turn_for (LEFT, 90, DEGREES)
    	
    	while not left_bumper.pressed ():
    		drivetrain.drive (FORWARD)
    		wait(5, MSEC)
    	
    	drivetrain.turn_for (RIGHT, 90, DEGREES)
    
    	while not left_bumper.pressed ():
    		drivetrain.drive (FORWARD)
    		wait(5, MSEC)
    	
    	drivetrain.turn_for (LEFT, 90, DEGREES)
    	
    	while not left_bumper.pressed ():
    		drivetrain.drive (FORWARD)
    		wait(5, MSEC)
    	
    	drivetrain.turn_for (LEFT, 90, DEGREES)
    
    	while not left_bumper.pressed ():
    		drivetrain.drive (FORWARD)
    		wait(5, MSEC)
    	
    	drivetrain.stop ()
  • Inicie o Wall Maze Playground, se ainda não estiver aberto, e execute o projeto.
  • Assista ao robô VR dirigir para o número ‘2’ no Wall Maze Playground!

    Uma vista de cima para baixo do playground do Labirinto da Parede. O Robô VR está agora posicionado sobre o marcador 2, voltado para a parede inferior com a frente pressionada contra a parede.
  • Selecione o botão "Reset" para reiniciar o Playground e mover o Robô VR de volta para a posição inicial.

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