NXT-G, leçon n°3 : Afficher et plus…

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 » Ven Déc 12, 2008 5:38 pm

NXT-G, Leçon n°3: Afficher et plus…


Rappel ici des règles:
* Première règle: familiarisez-vous avec les outils de programmation.
* 2ème règle: les capteurs doivent être connectés aux ports d’entrée (1,2,3 & 4) et les moteurs doivent être connectés aux ports de sortie (A, B & C).
* 3ème règle: Un bloc ne peut accomplir qu'une seule tâche à la fois. Il faut autant de blocs que de tâches à accomplir.


La coutume étant de se présenter, les premiers mots seront pour donc pour la communauté.
LEO :cri: > BONG :bounce: , aimerais-tu te présenter et dire qui tu es. J'aimerais que tu affiches "Salut de BONG!" sur ton petit écran.

Le programme ne peux pas être plus simple.
Pour cela nous allons utiliser le bloc 'AFFICHER", à choisir dans la palette 'Commun'.
Voici à quoi ressemble ce bloc quand il s'affiche par défaut.
Dans la zone Action, vous avez un menu déroulant qui nous offre plusieurs options. Choisissons 'Texte'.
Le panneau de configuration change d'aspect. Dans la zone 'Texte' encadrée de rouge, tapez à la place de 'Mindstorms NXT', 'Salut de BONG!'. Le texte est reproduit automatiquement dans la fenêtre encadrée d'orange qui est la fenêtre de prévisualisation..

Image

Quelques précisions sur cette petite fenêtre: elle représente l'écran du NXT. Le texte que vous venez de taper se trouve sur la ligne 5 (sur les 8 que contient l'écran). Ses coordonnées cartésiennes indiquent que la ligne commence au point 5, à partir de la gauche et au point 28 en descendant du coin haut gauche (qui est l'origine des axes).
L'écran est couvert d'un ensemble de points lumineux appelés Pixels constituant une sorte de grille.
Il a pour dimension 100 x 64 pixels. Ce n'est pas très grand, mais BONG n'est pas non plus un géant.
Si vous survolez cette zone à l'aide de votre souris, vous constaterez que le curseur prend la forme d'un main pointant du doigt. En cliquant, vous saisissez le texte qui peut être déplacé très facilement en n'importe quel endroit de la fenêtre. Par voie de conséquence, les indications chiffrées changent. C'est une manière aisée de positionner le texte, et surtout de visualiser ce que vous verrez sur l'écran.

Sauvegardez ce miniprogramme (AFFICHER) sur votre ordinateur.
Allumez le NXT et connectez BONG (à votre ordinateur), puis, téléchargez le programme.
Ce travail accompli, sélectionnez sur le petit écran du NXT "Software files", appuyez sur le bouton rouge et recherchez (AFFICHER). Appuyez une 2ème fois sur le bouton rouge pour exécuter le programme.


Avez-vous vu quelque chose?
Je ne pense pas. Le programme est supposé écrire 'Salut de BONG!' sur l'écran puis se termine.
L'exécution a été tellement rapide, que vous n'avez pas eu le temps de voir le texte s'afficher.

Quatrième règle: un programme NXT-G se termine une fois le dernier bloc exécuté.

La bonne nouvelle, c'est qu'il existe un moyen très facile pour le maintenir.
Le pseudo-code sera donc corrigé:
LEO :cri: > BONG :bounce: , j'aimerais que tu affiches sur ton petit écran "Salut de BONG!" pendant 10 secondes.

Il existe de nombreuses manières pour maintenir un affichage; je vais vous en montrer une; vous découvrirez les autres par vous-mêmes en pratiquant.

Survolez la palette 'Commun', arrêtez-vous sur le bloc 'Attendre', puis dans la palette horizontale sélectionnez 'Temps'.

Image

Ce bloc fait exactement ce qu'il dit: il attend.
Déposez-le à la suite du bloc "Afficher". Remarquez que le bloc "Afficher" a un T (pour texte) sur l'angle inférieur droit.

Image

A présent, enregistrez et lancez le programme (AFFICHER MIEUX) -vous savez comment faire, n'est-ce pas?-
Cette fois ci, vous avez le temps de lire "Salut de BONG!" sur le petit écran!

C'est un peu simpliste, mais vous avez appris à écrire un texte sur l'écran.
Remarque: l'écran peut recevoir jusqu'à 8 lignes de texte. Si l'on souhaite le remplir en totalité, il faudra autant de blocs que de lignes, soit 8 blocs.

Cinquième règle: dans le bloc "Afficher", la coche dans la case "Effacer" supprime tous les textes affichés sur l'écran en amont du bloc. Pour conserver les textes, décocher la case.

Voyons maintenant ce que nous pouvons faire d'autre avec ce bloc.

LEO :cri: > BONG, montre maintenant à nos amis que tu as un coeur qui bat.

Nous allons procéder ainsi:
Ajoutez à la suite des blocs un nouveau bloc "Afficher".
Vous allez modifier le contenu du panneau de configuration et lui donner cet aspect.

Image

Rester sur "Illustration" dans la zone ACTION.
Dans la zone FICHIER, rechercher et sélectionnez dans le champ déroulant 'Heart 01'. Ce motif s'affiche dans la fenêtre de prévisualisation.
Rappelez vous, si j'exécute le programme ainsi, je n'aurai pas le temps de voir ce coeur; il faut donc lui adjoindre un délai. En prenant cette précaution, je ne verrai qu'un coeur statique. Or, je souhaite voir son coeur battre. Il faut donc faire de l'animation.
Comment?
En y ajoutant un autre coeur, plus petit, avec un autre délai identique. Mais, ce n'est pas encore fini…
Si j'exécute le programme à ce stade, je verrai le coeur gros, puis petit battre qu'une seule fois.
Insuffisant.
Il me faut donc répéter en permanence ce passage gros-petit, pour simuler le battement du coeur. Nous le ferons à l'aide d'un bloc "BOUCLE". Nous verrons plus tard comment utiliser ce bloc.
Vous allez maintenant composer la suite ainsi:

Image

Dans le choix du 2ème motif, selectionnez bien 'Heart 02", et réglez le temps à 0,5 seconde.
Il ne reste plus qu'à s'assurer que le premier bloc est bien un texte. Ici, ce n'est pas le cas; rectifions en conséquence.
Et voilà le résultat final

Image

C'est terminé, enregistrez, exécutez ce programme (BONG coeur) et appréciez le résultat.

Nous avons traité dans la zone ACTION que 2 choix. Il en reste 2 autres.
Le choix REINITIALISER permet d'effacer tout l'écran. Cela est utile quand on ne souhaite pas retrouver dans la suite d'affichage des traces susceptibles de corrompre le résultat attendu. Il s'agirait de valeurs "oubliées" ou de caractères cachés par exemple. Ce choix permet donc de poursuivre en affichant un nouveau travail.

Enfin le choix DESSIN offre la possibilité de dessiner sur l'écran des figures géométriques. Ces dessins peuvent être statiques ou dynamiques, et s'ils découlent de formules mathématiques, ils peuvent être associés aux moteurs et capteurs. Dans ces cas, représenter par des tracés dynamiques les mouvements ou la présence d'objets, l'éloignement, etc…

Image

Dans la zone Type, nous avons à notre disposition 3 outils; le cercle a été sélectionné.
On peut le déplacer dans la fenêtre de visualisation à l'aide de la souris ou en modifiant les coordonnées x,y.
Le rayon est aussi modifiable; donc adaptable à toute sorte de présentation. On peut aussi faire une animation en s'inspirant de l'exemple précédent: déplacement d'un cercle dans l'écran, grossissement progressif, etc…
Mais il y a une contrainte: il vous faut multiplier le nombre de blocs, ce qui alourdit le programme.
Tranquillisez-vous, il existe une méthode très élégante utilisant un bloc particulier "Variable" qui calcules les positions x et y. Nous en parlerons plus tard.
Les options Point et Ligne s'utilisent de la même manière.
Remarque: pour tracer un rectangle, il vous faut tracer 4 lignes, donc créer 4 blocs.

Juste pour mémoire, voici à quoi ressemblent les Plots de Données; vous pouvez constater que des plots sont prévus pour les coordonnées x,y. Comme le NXT est un calculateur, il est capable d'envoyer des valeurs de positionnement ou de dimension (à partir de variables), lesquelles seront reportées sur l'écran.

Ce n'est pas encore fini pour le bloc AFFICHER.

A suivre…

A+
Roboleo
Dernière édition par roboleo le Lun Déc 15, 2008 2:10 pm, édité 1 fois au total.

cybermaster
Level 11
Level 11
 
Messages: 2205
Localisation: Valence
Âge: 29 ans

Messagepar cybermaster » Dim Déc 14, 2008 5:27 pm

Moi j'ai une question : si on veut afficher un texte de lignes sur l'écran, il faut mettre 8 blocs "afficher texte" . Pour qu'un bloc "afficher texte", reste affiché, il faut lui assigner un bloc "temps". Ok.

Mais si je veut qu'il y ai 8 lignes de texte, je mets 8 blocs "afficher texte", donc 8 blocs temps non ?

Alors comment faire pour que les 8 lignes soient en même temps, et pas les unes après les autres ? Est-il possible d'assigner un seul bloc" temps" pour tous les blocs "afficher texte" ?

Suis-je clair ? :think:

ps : ça fait beaucoup de questions pour un post ça ... :jok:

edit : j'ai compris !!

roboleo a écrit:Ce n'est pas encore fini pour le bloc AFFICHER.


:jok:

Avatar de l’utilisateur
Alban42800
Level 11
Level 11
 
Messages: 2473
Localisation: Loire (42)
Âge: 51 ans
expertgbbexpertnxtvainqueurconcours

Messagepar Alban42800 » Dim Déc 14, 2008 6:10 pm

il faut que tu mette 8 blocs textes à la suite. Dans le premier et seulement celui-ci tu coche "effacer".
Après le dernier tu met un bloc temps.

cailloux251
Level 5
Level 5
 
Messages: 142
Localisation: doubs. franche-comté

Messagepar cailloux251 » Dim Déc 14, 2008 6:16 pm

Je comprends maintenant pourquoi on appelle la brique intelligente :lolroule:

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

Messagepar roboleo » Lun Déc 15, 2008 1:51 pm

Alban42800 a écrit:il faut que tu mette 8 blocs textes à la suite. Dans le premier et seulement celui-ci tu coche "effacer".
Après le dernier tu met un bloc temps.


Exact…
Il faut ôter la coche de la case "Effacer" des 7 blocs suivants le premier (dans le panneau de configuration).
Le bloc efface tout ce qui se trouve en amont quand cette case est cochée.

A+
Roboleo

NeuroMimetis
Level 10
Level 10
 
Messages: 1574
collectionneur

Messagepar NeuroMimetis » Lun Déc 15, 2008 11:54 pm

Roboleo,

je trouve que tu te donnes vraiment du mal. Bravo pour ce partage !

A+
Neuro

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

Messagepar roboleo » Mer Déc 17, 2008 2:00 pm

NeuroMimetis a écrit:Roboleo,

je trouve que tu te donnes vraiment du mal. Bravo pour ce partage !

A+
Neuro

:resp: modeste…
C'est un gros travail entrepris depuis longtemps.

A+
Roboleo ;)

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

Messagepar roboleo » Mer Déc 17, 2008 3:06 pm

NXT-G, Leçon n°3: Afficher et plus… (suite et fin)

Vous avez testé le bloc "Afficher". Nous allons à présent donner un peu plus de personnalité à BONG, et pour cela nous allons introduire un nouveau venu: le bloc "SON".
Vous pouvez faire parler BONG, mais vous pouvez aussi utiliser les sons pour évaluer la progression dans un parcours en employant des tonalités différentes. Ou tout simplement jalonner un programme par des tops sonores pour vérifier son bon déroulement, etc…

Le bloc "Son" se présente ainsi avec son panneau de configuration par défaut. Les plots de données sont également visibles pour la circonstance.

Image

Dans la zone ACTION, 2 options sont disponibles. Le "fichier audio" est sélectionné par défaut. Dans la zone "Fichier" un menu déroulant vous propose de choisir un fichier son préenregistré faisant partie d'une collection fournie avec le programme NXT-G. On y trouve des bruitages, paroles (en anglais), sons jingle, et autres… Cette collection peut s'agrandir de vos propres enregistrements. Vous trouverez quelques explications en fin de cette rubrique.

Image

L'option "Tonalité" vous offre une série de réglages intéressants.
Dans la zone "Remarque" vous choisissez d'abord une note (le plus simple est de cliquer sur une des touches du clavier piano, qui émet aussitôt le son correspondant). Vous remarquerez que son nom s'affiche dans le champ de saisie (sous la forme de lettres A, B, C, D, E, F - pour La, Si, Do, Ré, Mi, Fa). Ensuite, précisez la durée. Vous remarquerez enfin que les zones du panneau de configuration situées à gauche sont identiques.
Si vous cochez "Répéter" dans la zone "fonction", la note sera maintenue jusqu'à la fin du programme, ou bien jusqu'à la lecture d'un autre "bloc Son" réglé sur "Arrêter" (sélectionné dans la zone "Contrôle").
Le "Volume" réglable, sera déterminé selon l'effet recherché. On notera cependant que plus le volume est élevé, plus la batterie d'alimentation est sollicitée.
Enfin, dans la zone "Attendre", si vous cochez "attendre la fin", le fichier son ou la note seront entendus en totalité, avant que le bloc suivant ne soit exécuté.

Pour conclure, reprenons le dernier programme (AFFICHER MIEUX) et procédons à quelques améliorations.

LEO :cri: > BONG :bounce: , veux-tu dire "Hello Lego" et émettre le bruit des battements du coeur.
Glissez 4 blocs "Son" aux emplacements indiqués ci-dessous, en modifiant les blocs "Attendre".

Image

Les blocs sont ainsi configurés

Image

Vous savez maintenant ajouter des sons pour personnaliser encore plus votre robot, mais sachez aussi que les sons peuvent-être de précieux auxiliaires pour tester vos travaux. Placer un son à l'intérieur d'un programme complexe facilite vos recherches en cas de correction. De même, placer un son en tête d'un bloc moteur en donnant des tonalités différentes permet de vérifier le mouvement à droite, à gauche ou tout droit. Une fois les vérifications faîtes, il ne reste plus qu'à supprimer ces bloc sons.

Créer vos propres sons:
Ce paragraphe est destiné à ceux qui ont une bonne pratique de l'informatique sur PC.

Soyez toujours prudents: pensez souvent à sauvegarder vos données.
Vous l'avez constaté, votre robot ne sait parler qu'anglais, et les bruits ou effets sonores sont limités.
Rien cependant ne vous empêche de personnaliser la collection de sons en y introduisant la vôtre, voire même avec des expressions dans votre langue.

Quelques remarques préliminaires:
votre NXT accepte seulement des fichiers dont les noms sont sous la forme monson.rso.
Tous les ordinateurs ne savent pas créer forcément ce type de fichier, mais la plupart utilisent le format monson.wav. Ce format est celui qui servira à la conversion en fichier .rso.
La première démarche consiste donc à enregistrer vos nouveaux fichiers sons en .wav.
Si vous travaillez sous windows vous utiliserez sans doute Sound Recorder. Avec un Mac, si vous disposez de la version QuickTime Pro, vous pourrez convertir presque tous les fichiers sons en .wav.
Une grande variété de bruitages sont accessibles sur le Net, beaucoup sont gratuits; vous pourrez donc en profiter.

Pour créer vos bruitages vous utiliserez les logiciels d'enregistrement du son fourni avec votre ordinateur (disposant d'un microphone).
Pour créer des expressions parlées vous irez sur le site suivant:
http://www.research.att.com/~ttsweb/tts/demo.php.
Là, vous suivrez ces simples étapes:
* Sélectionnez une voix (hommes/femme/langue, etc…)
* tapez un texte (expression qui doit être vocalisée, deux mots max de préférence). Le logiciel traduit le texte en langage parlé. Tester le fichier transposé.
* Téléchargez et enregistrer le sur votre ordinateur. Donnez lui un nom approprié, vous constaterez que le fichier est du type .wav

Il s'agit maintenant de le convertir en fichier .rso
Allez sur ce lien:
http://bricxcc.sourceforge.net/utilities.html.
* Téléchargez le programme Wav2Rso.
* Ouvrez Wav2Rso ainsi que votre fichier son .wav. Ce logiciel convertit ce dernier en fichier .rso, stocké dans votre ordinateur.
* Il ne reste plus qu'à ranger ce fichier .rso avec les autres dans le répertoire suivant:
LEGO MINDSTORMS NXT/MINDSTOMS NXT/engine/Sounds
Redémarrez le logiciel NXT-G, vous constaterez (si vous placez un bloc "Afficher" dans votre programme) l'adjonction de tous vos nouveaux sons.

-------------------------------------------

Bloc "Texte".
Pour compléter ce tour d'horizon sur le bloc "Afficher" je voudrais ici vous présenter un nouveau bloc intitulé bloc "Texte". Ce bloc a cette particularité de composer des textes en phrases à partir de lettres et de mots.

Image Image

Il paraît tout simple, mais il est puissant.
Nous utiliserons un nouveau terme intitulé "Chaîne".
Une chaîne est une collection de lettres, chiffres, espaces, caractères spéciaux ou une combinaison d'entre eux. Voici quelques exemples:
* CECIESTUNECHAINE
* Qu'il en soit ainsi
* 123456789
* !&#@$%€(?:/)
* Chaque ligne est une chaîne, y compris celle ci.

Ce bloc a cette particularité de contenir 3 chaînes différentes et de les réunir en une seule, sous forme de phrase ou de longue chaîne. On appelle cela une concaténation.
3 Champs sont mis à votre disposition et ont comme repères A, B et C. Ces champs peuvent être saisis manuellement par vous-même, ou être remplis par l'intermédiaire des plots de saisies. Gardez en mémoire que le champ A est toujours à gauche, le champ B au centre et le champ C à droite de la concaténation. Cet ordre ne peut pas être changé.
Dans l'exemple ci-dessus, A contient "Je"; B contient " m'appelle" et C contient " BONG"; ces 2 derniers précédés d'un espace. Le résultat sera "Je m'appelle BONG" quand il sera affiché sur l'écran. Et si je souhaite lire le résultat, les blocs seront assemblés ainsi, à condition de tirer un fil de données.

Image

Ce que nous lirons sur l'écran sera "Je m'appelle BONG" (sur la ligne 7), et non pas Mindstorms NXT.

Il découle de ceci 3 remarques:
Le bloc"Texte" ne contient que du texte (les chiffres ne sont pas considérés comme des valeurs)
le résultat, c.à d. la concaténation est un texte envoyé sur l'écran grâce à un fil de données. Ce texte remplace celui que nous voyons dans la fenêtre de visualisation.
Si la longueur du résultat dépasse la largeur de l'écran, le texte sera tronqué (il n'y a pas de passage à la ligne).

Quel intérêt, avons nous à choisir ce bloc, alors que le bloc "afficher" suffit à lui tout seul?
L'avantage réside dans l'utilisation des champs A, B et C qui permettent l'affichage de textes différents, provenant eux-mêmes de blocs "Variable" et transmis par des fils de données. Dans ce cas, tout ce qui concerne l'affichage reste inchangé; seul varie le contenu. En manipulant avec adresse les variables il est possible d'afficher sur écran des messages différents associés par exemple aux capteurs.

Variables et fils de données seront abordés dans de prochaines leçons.

A+
Roboleo

Avatar de l’utilisateur
Anio
Administrateur
Administrateur
 
Messages: 19497
Âge: 37 ans
revieweurmoceurstarwarsexpertambassadeur

Messagepar Anio » Mer Déc 17, 2008 3:20 pm

Merci pour tous ces articles. ;)

Ca va bien aider ceux qui commencent à s'intéresser au NXT (là comme ça, je pense à Cyber :)).
Think outside the box.

Tout plein de liens utiles dans mon profil ! :P

cybermaster
Level 11
Level 11
 
Messages: 2205
Localisation: Valence
Âge: 29 ans

Messagepar cybermaster » Mer Déc 17, 2008 4:20 pm

Anio a écrit: (là comme ça, je pense à Cyber :)).


Ah bon ? Mais pourquoi ? :jok:

Merci leo, leçon très bien faite :D

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

Messagepar roboleo » Mer Déc 17, 2008 5:19 pm

cybermaster a écrit:Merci leo, leçon très bien faite :D


Fais donc un tour sur ton topic. Moi, j'ai compris…! :lolroule:

A+
Roboleo

cybermaster
Level 11
Level 11
 
Messages: 2205
Localisation: Valence
Âge: 29 ans

Messagepar cybermaster » Mer Déc 17, 2008 6:03 pm

roboleo a écrit:Fais donc un tour sur ton topic. Moi, j'ai compris…! :lolroule:


Moi aussi j'ai compris, je rigole :jok:


Retourner vers De la théorie à la pratique

Qui est en ligne ?

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