Skip to main content

Icône Boîte à outils de l'enseignant Boîte à outils de l'enseignant - Aperçu de l'activité

  • Cette exploration initiera les élèves à la programmation de comportements répétitifs en utilisant des boucles répétitives ou éternelles.

  • Apprendre à programmer en utilisant des boucles répétées et éternelles permet aux élèves de gagner du temps lors de la construction d'un projet qui utilise les mêmes actions répétées. Pour plus d'informations sur les instructions utilisées dans un projet de texte, consultez les informations d' aide.

Le Clawbot V5 est prêt à bouger !

Cette exploration vous donnera les outils pour pouvoir commencer à créer des projets sympas qui utilisent des boucles.

  • Instructions VEXcode V5 qui seront utilisées dans cette exploration :

    • Drivetrain.driveFor(avant, 300, mm) ;

    • Drivetrain.turnFor(droite, 90, degrés) ;

    • ClawMotor.spinFor(marche arrière, 70, degrés) ;

    • ArmMotor.spinFor(avant, 360, degrés) ;

    • while (true) {}

    • répéter (4) {}

    • attendre(5, secondes) ;

Pour accéder à des informations supplémentaires, cliquez avec le bouton droit sur un nom de commande dans votre espace de travail pour voir l' aide pour cette commande.

Icône Conseils pour l'enseignant Conseils à l'enseignant

Si c'est la première fois que l'étudiant utilise VEXcode V5, il peut lire une variété d'articles dans la bibliothèque VEX.

Icône Conseils pour l'enseignant Conseils à l'enseignant - Utilisation de la saisie semi-automatique

La saisie semi-automatique est une fonctionnalité de VEXcode V5 qui prédit le reste de la commande que vous tapez. Pendant que les élèves travaillent dans VEXcode V5, encouragez-les à utiliser la fonction de saisie semi-automatique pour les aider avec la syntaxe.

L' article Autocomplete - Tutorials explique comment utiliser la fonctionnalité de saisie semi-automatique. Pour plus d'informations, explorez les tutoriels vidéo dans VEXcode V5.

Sélectionnez le tutoriel de saisie semi-automatique.

 

Assurez-vous d'avoir le matériel requis, votre ordinateur portable d'ingénierie et VEXcode V5 téléchargés et prêts.

Matériel requis :
Quantité Matériel nécessaire
1

Kit de démarrage de salle de classe VEX V5 (avec micrologiciel à jour)

1

VEXcode V5 (dernière version, Windows, macOS)

1

Carnet d'ingénierie

1

Exemple de projet Clawbot Template (Drivetrain 2-motor, No Gyro)

Étape 1 :  Commençons à programmer avec des boucles

  • Avant de commencer votre projet, sélectionnez le bon projet de modèle. L'exemple de projet Clawbot Template (Drivetrain 2-motor, No Gyro) contient la configuration du moteur du Clawbot. Si le modèle n'est pas utilisé, votre robot n'exécutera pas le projet correctement.

    Image montrant le menu Fichier ouvert dans VEXcode V5 montrant l'option Ouvrir des exemples

     

  • Sélectionnez Fichier et Ouvrir des exemples.
  • Faites défiler les différents exemples de projets. Ces projets démontrent une variété d'actions que votre Clawbot peut effectuer. Sélectionnez et ouvrez le projet d' exemple de modèle Clawbot (groupe motopropulseur 2 moteurs, pas de gyroscope).

     

  • Nommez le projet RepeatingActions.

    Image montrant le nom du projet d'actions répétitives dans VEXcode V5

  • Tapez le code suivant :

    int main() {
      // Initialisation de la configuration du robot. NE PAS ENLEVER !
      vexcodeInit() ;
    
      // Conduit vers l'avant et tourne à 90 degrés pendant 4 itérations 
      répétées(4
        ){Drivetrain.driveFor (avant, 300, mm)
        ; Drivetrain.turnFor (droite, 90, degrés) ;
        attendez(5, secondes) ;
    
      }
    }

Examinez le projet, puis procédez comme suit dans votre cahier d'ingénierie.

  1. Prédisez ce que le projet fera faire au Clawbot. Expliquez plus que le fait que le projet se répète.

    Qu'est-ce qu'il répète ? Que fait le Clawbot ?

  2. Écrivez votre prédiction, mais ne divisez pas le projet court en plus de deux parties.

Icône Boîte à outils de l'enseignant Boîte à outils de l'enseignant - Réponses

  1. Ce projet aura le robot : avancez de 300 millimètres , tournez à droite de 90 degrés, puis attendez 5 secondes 4 fois pour compléter un carré. Au lieu d'utiliser les mêmes 3 instructions 4 fois, l' instruction de répétition réduit la quantité à seulement 1 fois. L' instruction de répétition répète les actions consistant à avancer, puis à tourner.

  2. La prédiction pourrait simplement être « Le Clawbot se déplace dans un carré ». Ce serait un moyen succinct de capturer les mouvements répétés du Clawbot sans aucun contexte.

Les cahiers d'ingénierie des étudiants peuvent être maintenus et notés individuellement ou en équipe. Les liens précédents fournissent une rubrique différente pour chaque approche. Chaque fois qu'une rubrique est incluse dans la planification de l'éducation, il est de bonne pratique d'expliquer la rubrique ou au moins d'en donner des copies aux élèves avant le début de l'activité.

Étape 2 : Exécuter le projet et observer le robot

Une comparaison de deux extraits de code C++ dans VEXcode. L'extrait de code de gauche utilise l'entrée du capteur pour déterminer quand tourner, avec une boucle while qui vérifie si l'interrupteur de pare-chocs est enfoncé ; s'il est enfoncé, le robot tourne à droite de 90 degrés, sinon, il avance. L'extrait de droite utilise une distance fixe pour déterminer quand tourner, avec une boucle de répétition qui fait avancer le robot de 300 mm, tourne à droite de 90 degrés et attend 5 secondes, répétant cette séquence quatre fois

Regardez à nouveau le projet Actions répétitives (à droite). Ce projet répétera le comportement vers l'avant, puis tournera quatre fois. Une structure de boucle « répétée » est utilisée lorsque vous souhaitez utiliser un ensemble de comportements un certain nombre de fois.

Si la structure de répétition est remplacée par une structure de boucle « while », le robot répétera les comportements vers l'avant puis tournera « while » la condition est vraie. Vous pouvez également définir la condition sur « true » pour que la boucle « while » continue pour toujours.

Dans le projet de gauche, l'entrée d'un capteur est utilisée pour déterminer quand commencer à tourner. Le projet de droite utilise une distance de transmission fixe pour déterminer quand commencer à tourner.

Afin de vérifier en permanence l'entrée d'un capteur, une instruction "if/else" est utilisée conjointement avec une boucle "while". Dans le projet à gauche, le robot tournera à droite lorsque le capteur « BumperB » est enfoncé, sinon le robot avancera pour toujours si le capteur « BumperB » n'est pas enfoncé. Pour vérifier en permanence la valeur du capteur BumperB, l'instruction « if » est dans une boucle « while true ».

Le projet ci-dessus à gauche est un cas d'utilisation pratique d'une structure qui se répète éternellement - en utilisant les instructions while loops et  if ensemble. Imaginez une balayeuse autonome qui continue à avancer jusqu'à ce qu'elle heurte un mur ou un objet, puis tourne avant de continuer à conduire.

Icône Étendre votre apprentissage Étendez votre apprentissage

Pour explorer davantage la façon d'utiliser des boucles avec des conditionnels, demandez aux élèves de créer un projet de balayeuse de sol dans VEXcode V5.

  • Commencez par demander aux élèves de monter et de câbler les interrupteurs de pare-chocs.
  • Demandez aux élèves d'ouvrir le projet d' exemple de modèle Clawbot (groupe motopropulseur 2 moteurs, pas de gyroscope).

     

  • Demandez aux élèves de nommer le projet Floor Sweeper.

  • Demandez aux élèves de construire le projet suivant.

    // Inclure la bibliothèque V5
    #include "vex.h"/
      
    / Permet une utilisation plus facile de la bibliothèque VEX à l'
    aide de l'espace de noms VEX ;
    
    // La fonction pickRandom renvoie un entier aléatoire entre les valeurs min et
    // max transmises en tant que paramètres.
    int pickRandom(int min, int max) {
      return min + rand() / (RAND_MAX / (max - min + 1)) ;
    }
    
    int main() {
      // Initialisation de la configuration du robot. NE PAS ENLEVER !
      vexcodeInit() ;
    
      //Intialisez le générateur de nombres aléatoires.
      srand(randomSeed) ;
    
      while (true) {
        while (!BumperB.pressing()) {
          Drivetrain.drive(avant) ;
          wait(5, msec) ;
        }
        Drivetrain.stop() ;
        Drivetrain.turnFor((90 + pickRandom(0, 90)), degrés) ;
        wait(5, msec) ;
      }
    }

Si les élèves ont besoin d'aide avec l'une des instructions, référez-les aux informations d'aide.

Demandez aux élèves de 
télécharger et d'exécuter le projet pour observer comment le robot se déplace. Ensuite, commencez une discussion en classe et demandez aux élèves d'expliquer pourquoi la structure Forever a été utilisée au lieu d'une structure répétée.

Les étudiants doivent noter qu'une structure Forever est utilisée car ce projet vérifie en permanence si l'interrupteur de pare-chocs est enfoncé.

Étape 3 : Le défi des boucles carrées !

Un diagramme montrant un chemin carré vert avec des flèches indiquant la direction du mouvement autour du carré. Flèches orange supplémentaires à l'extérieur de la pointe carrée dans différentes directions, correspondant aux virages et aux mouvements nécessaires pour suivre le chemin

  • Faites conduire votre Clawbot dans un carré.
  • Avant chaque tour, la griffe doit être ouverte et fermée, et le bras doit être levé et abaissé.
  • Le Clawbot ne peut pas rouler le long d'un côté de la place plus d'une fois.
  • Vous pouvez utiliser le projet RepeatingActions ci-dessus comme point de départ, mais l'enregistrer sous SquaredLoops  avant d'apporter des modifications.

Image du nom du projet Squared Loops dans la barre d'outils VEXcode V5

Dans votre cahier d'ingénierie, planifiez ce qui suit :

  • Planifiez votre solution et prédisez ce que chaque instruction de votre projet fera faire au Clawbot.
  • Téléchargez et exécutez votre projet pour le tester avant de le soumettre.
  • Apportez des modifications au projet au besoin et prenez des notes sur ce qui a été modifié pendant les tests.

Icône Boîte à outils de l'enseignant Boîte à outils de l'enseignant - Solution

Voici une solution potentielle au défi des boucles carrées :

int main() {
  // Initialisation de la configuration du robot. NE PAS ENLEVER !
  vexcodeInit() ;

  repeat(4){
    Drivetrain.driveFor(avant, 300, mm) ;
    ClawMotor.spinFor (arrière, 70, degrés) ;
    ArmMotor.spinFor (avant, 360, degrés) ;
    ClawMotor.spinFor (avant, 70, degrés) ;
    ArmMotor.spinFor (arrière, 360, degrés) ;
    Drivetrain.turnFor (droite, 90, degrés) ;
    wait(5, msec) ;
  }
}

Vous pouvez fournir aux étudiants une grille de programmation pour noter leurs projets. Les cahiers d'ingénierie des
étudiants peuvent être maintenus et notés individuellement ou en équipe.