Skip to main content

Lição 3: Adicionando o Sensor do Olho para Baixo

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 código do projeto está no lado esquerdo, com o playground sendo mostrado no lado direito. O robô de RV está sobre a borda vermelha do playground e parou de se mover para não cair 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 angular do Dynamic Castle Crasher Playground mostrando o robô VR empurrando o bloco de um castelo. O Robô de RV parou antes que o bloco do castelo fosse empurrado para fora da borda do playground.

Adicionar o sensor de olho para baixo

Outro sensor é necessário para que o Robô VR possa determinar se está perto da borda do Playground ou não. 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.Uma vista da parte inferior do Robô VR, com o Sensor Down Eye do Robô VR destacado.

Os comportamentos de dirigir para frente e girar só precisam ser repetidos até que o Sensor do Olho para Baixo informe que a borda vermelha foi detectada. Assim, o ciclo infinito while pode ser substituído por um ciclo while com uma condição e não , de forma a repetir os comportamentos de avançar e virar até à condição de detetar o vermelho fronteira é cumprida.

  • Carregue o projeto Unit9Lesson2 da lição anterior.

    def main():
    	while True:
    		# 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)
  • Renomeie o projeto Unit9Lesson3.
    A barra de ferramentas VEXcode VR mostra os nomes do projeto destacados com uma caixa vermelha. O nome do projeto diz Unidade 9 Lição 3.
  • Adicione um comentário para observar como o loop enquanto será utilizado com o sensor de olho para baixo. O seu projeto deve agora ter este aspeto:

    def main():
    	# Procure construir enquanto a borda vermelha não é detectada
    	enquanto True:
    		# 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)
  •  É necessário um comando para verificar continuamente o Sensor do Olho para Baixo. O robô VR precisará repetir esses comportamentos enquanto o sensor Down Eye não detectar a cor vermelha. Altere a condição do ciclo while colocando a palavra-chave not à frente da condição. O seu projeto deve agora ter este aspeto:

    def main():
    	# Procure construir enquanto a borda vermelha não é detectada
    	enquanto não for Verdadeiro:
    		# 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)
  • Em seguida, altere a condição de True para o  comando down_eye.detect. Defina o parâmetro para 'VERMELHO'. 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():
    			# 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)
  • 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, 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 do playground Dynamic Castle Crasher mostrando o robô VR empurrando um castelo para fora da borda do Playground, mas não caindo do playground também.

Assim que a condição do ciclo while for satisfeita, o fluxo do projeto será executado fora do ciclo the while.

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