Lição 3: Quando a cor vermelha é detectada
Não há comandos para dizer ao Robô VR o que fazer depois de detectar a cor vermelha. Para evitar a borda vermelha, o robô VR deve reverter e girar assim que detectar a cor vermelha, como neste vídeo.
-
Adicione um comentário no final do ciclo while para indicar o que deve acontecer quando o Down Eye Sensor deteta a borda vermelha. O seu projeto deve agora ter este aspeto:
def main(): # Procure construir enquanto a borda vermelha não é detectada enquanto não estiver down_eye.detect(VERMELHO): # O sensor de distância detecta um castelo? if front_distance.found_object(): # Crash castle detected by Distance Sensor drivetrain.drive(FORWARD) else: # Turn to find a castle using the Distance Sensor drivetrain.turn(RIGHT) wait(5, MSEC) # Reverse and turn when red border detected -
Adicione um comando drive_for e turn_for abaixo do comentário para permitir que o robô VR faça marcha-atrás e rode assim que o sensor de olho para baixo detetar a cor vermelha.
def main(): # Procure construir enquanto a borda vermelha não é detectada enquanto não estiver down_eye.detect(VERMELHO): # O sensor de distância detecta um castelo? if front_distance.found_object(): # Castelo de colisão detectado pelo sensor de distância drivetrain.drive (FORWARD) else: # Vire para encontrar um castelo usando o sensor de distância drivetrain.turn (RIGHT) wait(5, MSEC) # Reverse and turn when red border detected drivetrain.drive_for (REVERSE, 300, MM) drivetrain.turn_for (RIGHT, 90, DEGREES) - Abra o Dynamic Castle Crasher Playground, se ainda não estiver aberto, e execute o projeto. O robô de RV se comporta como você pretendia?
- Quando este projeto é executado, há duas condições que são verificadas. A primeira é a condição do Down Eye Sensor detetando a cor vermelha dentro do loop enquanto . Note que o fluxo do projeto passa para a próxima condição de um objeto que está a ser detetado APENAS se o Sensor de Olho Para Baixo não visualizar a cor vermelha. Se o sensor de olho para baixo detetar vermelho, o fluxo do projeto ignora a instrução if else e passa a conduzir em marcha-atrás e a virar.

- A segunda condição que é verificada é a instrução if else. Enquanto o Sensor Down Eye não detetar vermelho, o projeto continuará no loop enquanto para verificar a condição do Sensor de Distância. O Robô VR usará os dados do Sensor de Distância para tomar a decisão de dirigir para frente ou virar à direita.

-
No entanto, uma vez que o Sensor de Olho para Baixo detecta a cor vermelha, o Robô VR irá dirigir em sentido inverso, girar e parar, pois esse é o fim do fluxo do projeto. Não há loop usado para repetir os comportamentos novamente.

Adicionando um ciclo infinito while
-
É necessário um ciclo infinito while para que os comportamentos se repitam num ciclo. Arraste ou digite a while loop na parte superior do projeto e defina a condição como True para criar um loop infinito. De seguida, copie e cole o código anterior dentro do ciclo infinito while . Certifique-se de que os comandos estejam devidamente recuados sob os cabeçalhos corretos, caso contrário, o projeto pode não ser executado conforme o esperado. O seu projeto deve agora ter este aspeto:
def main(): while True: # Procure construir enquanto a borda vermelha não é detectada enquanto não estiver down_eye.detect(VERMELHO): # O sensor de distância detecta um castelo? if front_distance.found_object(): # Castelo de colisão detectado pelo sensor de distância drivetrain.drive (FORWARD) else: # Vire para encontrar um castelo usando o sensor de distância drivetrain.turn (RIGHT) wait(5, MSEC) # Reverse and turn when red border detected drivetrain.drive_for (REVERSE, 300, MM) drivetrain.turn_for (RIGHT, 90, DEGREES) - Abra o Dynamic Castle Crasher Playground, se ainda não estiver aberto, e execute o projeto. O robô de RV se comporta como você pretendia?
-
Quando este projeto for executado, o Robô de RV irá dirigir em direção a um castelo detectado e virar à direita se nenhum castelo for relatado. Assim que o Sensor de Olho para Baixo detecta a cor vermelha, o Robô de RV dirige em sentido inverso, vira e continua dirigindo em direção a outro castelo.

Perguntas
Selecione uma ligação abaixo para aceder ao questionário da aula.
Google Doc / .docx / .pdf