Skip to main content

Leçon 3 : Lorsque la couleur rouge est détectée

Il n'y a pas de commandes pour dire au robot VR quoi faire une fois qu'il détecte la couleur rouge. Afin d'éviter la bordure rouge, le robot VR doit faire marche arrière et tourner une fois qu'il détecte la couleur rouge, comme il le fait dans cette vidéo.

Fichier vidéo
  • Ajoutez un commentaire à la fin de la boucle while pour indiquer ce qui doit se passer lorsque le capteur Down Eye détecte la bordure rouge. Votre projet devrait maintenant ressembler à ceci :

    def main() :
    	# Rechercher un bâtiment alors que la bordure rouge n'est pas détectée
    	alors quedown_eye.detect (ROUGE) :
    		# Le capteur de distance détecte-t-il un château ?
    		
    		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
  • Ajoutez une commande drive_for et turn_for sous le commentaire pour permettre au robot VR de faire marche arrière et de tourner une fois que le capteur Down Eye détecte la couleur rouge.

    def main() :
    	# Rechercher un bâtiment alors que la bordure rouge n'est pas détectée
    	alors quedown_eye.detect (ROUGE) :
    		# Le capteur de distance détecte-t-il un château ?
    		
    		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
    	drivetrain.drive_for(REVERSE, 300, MM)
    	drivetrain.turn_for(RIGHT, 90, DEGREES)
  • Ouvrez le terrain de jeu Dynamic Castle Crasher s'il n'est pas déjà ouvert et exécutez le projet. Le robot VR se comporte-t-il comme prévu ?
  • Lorsque ce projet est exécuté, deux conditions sont vérifiées. La première est la condition du capteur Down Eye détectant la couleur rouge à l'intérieur de la boucle while Notez que le flux du projet passe à la condition suivante d'un objet détecté UNIQUEMENT si le capteur Down Eye ne voit pas la couleur rouge. Si le capteur Down Eye détecte du rouge, le flux du projet ignore l'instruction if else et passe à la conduite en marche arrière et en virage.
    Le code du projet Python de cette leçon avec un diagramme montrant le flux du projet sur le côté. Il indique Premier état vérifié : Down Eye Sensor détecte le rouge en orange, représentant le début de la boucle. Il y a une boucle de flèche rouge pour le moment où le capteur Down Eye détecte le rouge, qui signalera True et le projet quittera le look répétitif. S'il signale faux, le code passera à l'instruction if then et continuera à répéter jusqu'à ce que le capteur Down Eye détecte le rouge.
 
  • La deuxième condition qui est vérifiée est l'instruction if else. Tant que le capteur Down Eye ne détecte pas le rouge, le projet continuera dans la boucle while pour vérifier l'état du capteur de distance. Le robot VR utilisera les données du capteur de distance pour prendre la décision d'avancer ou de tourner à droite. Le code du projet Python de cette leçon avec un diagramme montrant le flux du projet sur le côté. Il indique Deuxième condition vérifiée : le capteur de distance détecte l'objet. Il montre ce qui se passe si la deuxième condition est vérifiée, et si elle est vraie, le robot VR avancera, et si la deuxième condition est fausse, le robot VR tourne à droite.
  • Cependant, une fois que le capteur Down Eye détecte la couleur rouge, le robot VR roule en marche arrière, tourne, puis s'arrête car c'est la fin du flux du projet. Aucune boucle n'est utilisée pour répéter les comportements.

    Une vue de dessus du terrain de jeu Dynamic Castle Crashed montrant certains des châteaux renversés, le robot VR s'étant retourné et retourné après avoir franchi la frontière rouge, il fait à nouveau face au centre du terrain de jeu.

Ajout d'une boucle infinie while

  • Une boucle infinie while est nécessaire pour que les comportements se répètent sur une boucle. Faites glisser ou tapez a while en haut du projet et définissez la condition sur Vrai pour créer une boucle infinie. Ensuite, copiez et collez le code précédent à l'intérieur de la boucle infinie while . Assurez-vous que les commandes sont correctement indentées sous les en-têtes corrects, sinon le projet risque de ne pas fonctionner comme prévu. Votre projet devrait maintenant ressembler à ceci :

    def main() :
    
    	while True :
    		# Cherche un bâtiment alors que la bordure rouge n'est pas détectée
    		alors quedown_eye.detect (ROUGE) :
    			# Le capteur de distance détecte-t-il un château ?
    		
    			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
    		drivetrain.drive_for(REVERSE, 300, MM)
    		drivetrain.turn_for(RIGHT, 90, DEGREES)
    
  • Ouvrez le terrain de jeu Dynamic Castle Crasher s'il n'est pas déjà ouvert et exécutez le projet. Le robot VR se comporte-t-il comme prévu ? 
  • Lorsque ce projet est exécuté, le robot VR se dirigera vers un château détecté et tournera à droite si aucun château n'est signalé. Une fois que le capteur Down Eye détecte la couleur rouge, le robot VR roule en marche arrière, tourne et continue de rouler vers un autre château.

    Une vue de haut en bas de l'aire de jeux Dynamic Castle Crasher montre que le robot VR a renversé plusieurs châteaux dans l'aire de jeux et se dirige maintenant vers le dernier château debout.

Questions

Veuillez sélectionner un lien ci-dessous pour accéder au questionnaire de la leçon.

Google Doc / .docx / .pdf