NXT-G, leçon n°6 : Attendre et attendre...

Pour expliquer certains fonctionnements, principes et fondements.
Avatar de l’utilisateur
roboleo
Level 8
Level 8
 
Messages: 955
Localisation: Hauts de Seine
expertnxt

Messagepar roboleo » Sam Jan 17, 2009 6:17 pm

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 :cri: > 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.

Image

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.

Image

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.

Image


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

Image

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

Image

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

Image

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

Image

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

Image

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

Image

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
A+
Roboleo
" Je ne cherche pas, je trouve…" P. Picasso

Avatar de l’utilisateur
semtou
Level 7
Level 7
 
Messages: 525
Localisation: Toulouse
Âge: 55 ans

Messagepar semtou » Ven Jan 23, 2009 9:17 am

Merci Roboléo, j'aime lire tes articles car je me rend compte que j'utilise toujours les mêmes blocs. J'ai donc tendance à ignorer les autres. Attendre rotation par exemple, j'aurai pu m'en servir bien des fois. j'ai pas trop le temps de programmer en se moment mais j'ai déjà mis le NXT au centre de mon robot (à la place du cœur) il me tarde d'avoir fini. A +
"Ce qui se conçoit bien s’énonce clairement et les mots pour le dire viennent aisément..." Nicolas Boileau-Despreaux
Mon blog = http://semtou.skyrock.com/
Ma galerie photos = http://www.brickshelf.com/cgi-bin/gallery.cgi?m=SEMTOU

Avatar de l’utilisateur
roboleo
Level 8
Level 8
 
Messages: 955
Localisation: Hauts de Seine
expertnxt

Messagepar roboleo » Dim Jan 25, 2009 1:32 am

semtou a écrit:Merci Roboléo, j'aime lire tes articles car je me rend compte que j'utilise toujours les mêmes blocs. J'ai donc tendance à ignorer les autres. Attendre rotation par exemple, j'aurai pu m'en servir bien des fois. j'ai pas trop le temps de programmer en se moment mais j'ai déjà mis le NXT au centre de mon robot (à la place du cœur) il me tarde d'avoir fini. A +


Merci à toi aussi… Je prépare la suite et je pense que tu trouveras des astuces pour écrire des programmes plus élaborés, surtout pour ton robot. ;)
A+
Roboleo
" Je ne cherche pas, je trouve…" P. Picasso


Retourner vers De la théorie à la pratique

Qui est en ligne ?

Utilisateurs parcourant actuellement ce forum : Aucun utilisateur inscrit et 8 invités