NXT-G, Leçon n°6: Attendre et attendre…
Ce que fait votre robot le plus utilement, c'est attendre…
Oui, vous m'avez bien lu! Vous ne me croyez pas? Alors voyons les choses différemment.
* BONG se dirige vers une ligne noire tracée au sol, attendant que le capteur détecte cette ligne.
* BONG se prépare à lancer une balle dans une cible, attendant que le capteur tactile soit appuyé puis relâché.
* BONG se dirige vers le mur, attendant que le capteur à ultrasons détecte ce mur.
* BONG est immobile sur la ligne de départ, attendant que le capteur sonore reçoive mon mot d'ordre "aller".
Avez-vous saisi qu'attendre est une partie importante de la programmation d'un robot? Que vos robots seront probablement en attente permanente d'un ou plusieurs événements? Cela peut-être l'attente d'un bouton du NXT à appuyer, ou quelque chose de comparable aux exemples précédents.
Toutes ces attentes seront traduites par l'utilisation du bloc ATTENDRE .
Bloc ATTENDRE
Un des principes les plus importants de ce bloc est qu'il interrompra cette attente dès que la condition spécifique sera réalisée.
Peu importe le capteur, capteurs physiques ou intégrés, ils sont tous concernés. Quand vous emploierez le bloc Attendre, vous devrez impérativement préciser quelle condition doit être réalisée pour mettre fin à cette attente.
Essayons de comprendre ce fonctionnement en adressant à BONG quelques instructions en pseudo code.
LEO > BONG avance jusqu'à ce que quelque chose survienne.
C'est vague, non? Que signifie "quelque chose survienne"? En fait, cela peut-être n'importe quoi:
- après un délai de 5 secondes,
- Dès que le capteur sonore enregistre un bruit intense,
- Dès que le capteur à ultrasons détecte un obstacle à 20 cm au devant.
Avez-vous d'autres idées?
Je souhaite que BONG avance jusqu'à ce qu'une condition particulière soit appliquée. Et avec NXT-G, cette condition peut-être satisfaite grâce aux capteurs, à un minuteur, aux boutons du NXT ou à un limiteur de temps.
Nous allons faire une petite démonstration:
Vous allez créer ce petit programme.
Le bloc DEPLACER est configuré pour une durée "illimitée" ce qui signifie qu'il fera tourner les moteurs B et C en permanence avec un déplacement vers l'avant.
Le bloc ATTENDRE est choisi dans la palette "commun"; il est aussi accessible dans la palette complète. En survolant l'icône, on affiche une petite palette latérale dont on aperçoit le contenu dans la figure ci-dessous. Ce bloc offre plusieurs options correspondant aux différents capteurs connus et au capteur Temps. Tous ces choix sont associés à cette notion d'attente.
Le capteur TEMPS a été choisi pour cet exemple. Vous remarquerez dans le panneau de configuration que la zone Contrôle dispose justement un champ de saisie sélectionné sur TEMPS.
La zone Jusque a un champ de saisie dont la valeur a été fixée à 10 secondes.
Sauvegardez ce programme, téléchargez-le sur votre robot et exécutez-le. Que se passe-t-il?
Est-ce que le moteur tourne pendant 10 secondes, puis s'arrête? Si ce n'est le cas, vérifiez que le panneau de configuration du bloc Attendre est bien configuré sur 10 secondes.
La 4 ème règle s'applique ici. Malgré la rotation illimitée du moteur, le programme se termine après le dernier bloc.
Bien, c'est à peu près tout ce qu'il y a à dire sur le capteur Attendre TEMPS.
Voyons maintenant comment réagissent les capteurs physiques.
Remplacez le bloc Attendre Temps par le bloc Attendre Capteur tactile, puis exercez-vous à sauvegarder et utiliser ce programme modifié. Vous remarquerez que les panneaux de configuration changent selon le type de capteur.
Une petite astuce pour remplacer un capteur par un autre, sans procéder à une suppression, puis une nouvelle insertion.
Il suffit de sélectionner le bloc en place pour faire apparaître le panneau de configuration; puis, dérouler dans la zone Contrôle, le champ de saisie et choisir Capteur au lieu de Temps.
La zone Jusque est alors remplacée par la zone Capteur. Dérouler le champ et sélectionner l'élément concerné.
Il ne reste plus qu'à paramétrer le panneau de configuration, selon les conditions liées à ce capteur.
Nous allons maintenant examiner chacun de ces blocs liés aux capteurs sauf Rec. message qui est un bloc spécifique associé au dispositif Bluetooth, et que nous étudierons plus tard.
Bloc Attendre Capteur Tactile
Il est représenté ci-dessus avec la configuration suivante: câblé sur le port 1; fin d'attente pour Action Heurté. Dès que le bouton du capteur est heurté, les moteurs B et C s'arrêtent et BONG n'avance plus.
Bloc Attendre Capteur Sonore
Il est représenté ci-dessus avec la configuration suivante: câblé sur le port 2; fin d'attente pour Son < (inférieur) à 30. Tant que le niveau sonore est inférieur à 30, BONG avance. Dès que cette valeur est atteinte, les moteurs B et C s'arrêtent et BONG n'avance plus.
Bloc Attendre Capteur Photosensible
Il est représenté ci-dessus avec la configuration suivante: câblé sur le port 3; fin d'attente pour Lumière < (inférieur) à 25. Tant que le niveau lumineux est inférieur à 25, BONG avance. Dès que cette valeur est atteinte, les moteurs B et C s'arrêtent et BONG n'avance plus. A noter que le générateur de lumière est activé.
Bloc Attendre Capteur Ultrasons
Il est représenté ci-dessus avec la configuration suivante: câblé sur le port 4; fin d'attente pour Distance < (inférieur) à 60 cm. Tant que cette distance est inférieure à 60 cm, BONG avance. Dès que cette valeur est atteinte, les moteurs B et C s'arrêtent et BONG n'avance plus.
Bloc Attendre Boutons NXT
Il est représenté ci-dessus avec la configuration suivante: Attendre jusqu'à ce que le bouton flèche droite du NXT soit relâché. Quand cet événement survient, les moteurs B et C s'arrêtent et BONG n'avance plus.
Bloc Attendre Capteur Rotation
Il est représenté ci-dessus avec la configuration suivante: Attendre que le Moteur A accomplisse une demie rotation(180 degrés) en marche arrière. Quand cette action est accomplie, le moteur A s'arrête.
Bloc Attendre Capteur Minuteur
Il est représenté ci-dessus avec la configuration suivante: attendre jusqu'à ce que le Minuteur 2 dépasse 15 secondes.
Tous les Minuteurs se déclenchent dès le démarrage du programme. et le minuteur 2 attendra que 15 secondes soient écoulées avant de poursuivre le programme. Tant que cette valeur n'est pas atteinte, BONG avance. Dès que cette valeur est atteinte, les moteurs B et C s'arrêtent et BONG n'avance plus.
Vous apprendrez plus tard comment remettre à zéro les minuteurs, sachez pour l'instant qu'il y a 3 Minuteurs (Minuteur 1, Minuteur 2 et Minuteur 3) et que tous les trois commencent à compter dès le démarrage du programme.
Et maintenant, laissez-moi vous poser une question. Vous savez comment faire attendre votre robot, mais savez-vous comment lui faire exécuter et répéter encore et encore d'autres actions?
Pour faire cela vous emploierez un nouveau bloc: le bloc BOUCLE. C'est ce que nous verrons dans une prochaine leçon.
A+
Roboleo