Skip to main content

Lição 3: Entrada de Múltiplos Sensores

Na lição anterior, o sensor de distância foi usado para determinar se o robô VR detectou um objeto ou não e, em caso afirmativo, avançou em direção ao objeto. No entanto, nenhum valor de sensor foi usado para determinar se o Robô VR estava perto da borda do Playground para pará-lo. Parar o Robô de RV quando estivesse perto da borda do Playground impediria que ele saísse do lado.

O projeto VEXcode VR da Lição anterior usando o Sensor de Distância no robô para detectar castelos e, em seguida, dirigi-los para travá-los, é mostrado à esquerda. À direita está a Janela do Playground mostrando um projeto em andamento, com vários castelos quebrados, mas o Robô de RV está prestes a sair da borda do Playground.

Como está, o projeto repete os comportamentos de avançar e virar, para sempre. No entanto, não há condição de verificar a borda vermelha ao redor do Playground. Assim, o Robô VR pode cair do Playground ao dirigir para frente.

Uma vista lateral do robô VR no Dynamic Castle Crasher Playground, empurrando um pedaço de um castelo para o lado e prestes a sair da borda.

Outro sensor é necessário para que o Robô VR possa determinar se está perto da borda do Playground ou não. Os comportamentos de avançar e virar só precisam ser repetidos até que a borda vermelha seja detectada. Assim, o bloco [Forever] pode ser substituído pelo bloco [Repeat until], a fim de repetir os comportamentos de avançar e girar até que a condição de detectar a borda vermelha seja atendida. O Sensor de Down Eye pode ser usado para determinar se o Robô VR está perto da borda do Playground, detectando a borda vermelha ao redor do Playground.

Um bloco de detecção de cor VEXcode VR lê Down Eye detecta vermelho?.
  • Carregue o projeto Unit9Lesson2 da lição anterior.
O Projeto da Lição 2 da Unidade 9. O projeto começa com um bloco When started com um bloco forever anexado. Dentro do bloco sempre está um bloco Se então com a Distância Frontal encontrou um objeto como parâmetro. A ramificação If then tem um comentário que diz Knock over the building found using the Distance Sensor and a Drive forward block. A ramificação else tem um comentário que lê Turn para encontrar um edifício usando o Sensor de Distância e um bloco turn right.
  • Renomeie o projeto Unit9Lesson3.
A caixa de nome do projeto no centro da barra de ferramentas VEXcode VR, destacada com uma caixa vermelha, à esquerda do botão Select Playground. O nome do projeto diz Unidade 9 Lição 3.
  • É necessário um bloco para verificar continuamente o Sensor de Olho para Baixo. O Robô VR precisará repetir esses comportamentos até que o Sensor Down Eye detecte a cor vermelha. Primeiro, remova o bloco [Forever].
Uma visão geral da remoção do bloco Forever do projeto. O novo projeto passa do bloco When started para o bloco If then else, sem o loop Forever presente.
  • Adicione um bloco [Repeat until].
Uma visão geral da adição do bloco Repeat until em torno da totalidade do bloco If then else. O novo projeto começa com um bloco When Started (Quando iniciado) e, em seguida, tem um bloco Repeat until (Repetir até) com o parâmetro aberto. Dentro do C do bloco Repeat until está o bloco If then else.
  • Adicione um <Color sensing> bloco dentro do bloco [Repetir até] e defina os parâmetros para ‘DownEye’ detecta ‘vermelho’.
O mesmo projeto com o conjunto Down Eye Detects red como o parâmetro do bloco Repeat until.

Um bloco [Repeat until] é usado em vez de um bloco [Wait until] neste projeto. Isso ocorre porque um bloco [Aguarde até] é um bloco de espera que pausará o fluxo do projeto até que a condição seja atendida. Se um bloco [Wait until] for usado, o bloco [If then else] não será executado até que a condição do bloco [Wait until] seja atendida e o bloco [If then else] só será executado uma vez.

Um diagrama do fluxo do projeto se um bloco Esperar até que fosse usado em vez de um loop Repetir até. O projeto permaneceria no bloco wait until, até que a condição fosse relatada como true, e só então passaria para o bloco If then else.

Ao usar um bloco [Repeat until], a condição [If then else] é constantemente verificada e executada.

Um diagrama do fluxo do projeto com o bloco Repeat Until, mostrando que a condição do bloco If then else é continuamente verificada e executada com base em se o objeto é encontrado (True) ou não encontrado (false).
  • Adicione um comentário para anotar a finalidade de usar o bloco [Repetir até].
O mesmo projeto construído anteriormente, com um bloco Comentário adicionado entre o bloco Quando iniciado e o bloco Repetir até. O comentário diz "Procure edifícios até que a borda vermelha seja detectada".
  • Abra o Dynamic Castle Crasher Playground e execute o projeto.
  • Quando este projeto é executado, o Robô VR irá conduzir em direção a um objeto detectado e virar à direita caso contrário. No entanto, mesmo que o Down Eye Sensor esteja procurando a borda vermelha, o Robô VR não recebe instruções sobre o que fazer quando detecta vermelho, então ele continua dirigindo e eventualmente cai do Playground.

    Uma vista de cima para baixo da Janela do Parque Infantil Dynamic Castle Crasher enquanto o projeto está em execução, com vários castelos caindo e o Robô VR saindo da borda superior direita do Parque Infantil em busca de uma peça do castelo.

Uma vez que a condição do bloco [Repetir até] seja atendida, o fluxo do projeto será executado a partir do bloco [Repetir até].

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