NXT-G, leçon n°11: Mes blocs à moi...

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 » Mar Avr 14, 2009 7:11 pm

NXT-G, Leçon n°11: Mes BLOCS à moi…

Nous abordons ici une partie des plus intéressantes de la programmation NXT-G, celle qui vous permet d'élargir considérablement vos palettes de blocs.
Parmi toutes les palettes à notre disposition, il en est une que nous n'avons pas encore examiné. C'est ce que nous allons faire, et pour cela, vous allez choisir la palette personnalisée, puis survoler l'icône "Mes Blocs".
Vous ne voyez pas grand chose, n'est-ce pas?
En effet, "Mes Blocs" ne contient aucun bloc. Et pour cause, parce que ce sont les vôtres, ceux que vous n'avez pas encore créés, mais que vous allez créer!

Et pourquoi créer des blocs dans "Mes Blocs"?
Parce que vous avez constaté en écrivant vos programmes NXT-G que certaines parties pouvaient être réutilisées telles quelles dans des programmes différents. Et que les réécrire à chaque fois, c'était souvent du temps perdu et du "copier-coller" (pour éviter aussi de commettre des erreurs). Alors pourquoi ne pas utiliser un moyen de simplification et de gain de temps?
Et que pourrait-on trouver dans ces morceaux de programme? Par exemple le contrôle des roues, des messages sonores, des calculs intermédiaires, etc..
Tous ces morceaux constituent une collection de Blocs NXT-G qui seront groupés dans "Mes Blocs" pour être réutilisés à volonté dans tous les programmes que vous écrirez.
C'est ce que je vais essayer de vous expliquer…

Pour illustrer le propos, nous allons reprendre le programme NXT-G figurant en tête de la leçon n°7 avec le pseudo-code qui l'accompagne:
Figure 1
Image

LEO :cri: > BONG, avance de 3 rotations (du moteur), arrête-toi et tourne à droite de 90 degrés.
(BONG avance de 3 rotations, s'arrête puis tourne à droite…)

LEO :cri: > BONG, avance de 3 rotations (du moteur), arrête-toi et tourne à droite de 90 degrés.
(BONG avance à nouveau de 3 rotations, s'arrête puis tourne à droite…)

LEO :cri: > BONG, avance à nouveau de 3 rotations (du moteur), arrête-toi et tourne à droite de 90 degrés.
(BONG avance de 3 rotations, s'arrête puis tourne à droite…)

LEO :cri: > BONG, avance à nouveau de 3 rotations (du moteur), arrête-toi et tourne à droite de 90 degrés.
(BONG avance de 3 rotations, s'arrête puis tourne à droite…)

Je peux aussi simplifier cette suite de 8 blocs et la remplacer par une simple BOUCLE, solution plus élégante.
Figure 2
Image

Bien. Mais que se passe-t-il si j'envisageais faire réagir BONG au capteur PHOTOSENSIBLE après 2 tours de boucle?
Il faudrait donc que je modifie le programme de la figure 1 en insérant au milieu un bloc Capteur PHOTOSENSIBLE, ce qui ne pose aucun problème.
Mais pour le programme de la figure 2, je dois modifier la BOUCLE en remplaçant Compter 4 par 2. Puis, ajouter un bloc Capteur PHOTOSENSIBLE suivi d'une 2ème BOUCLE identique à la première.
Le programme ressemblerait à ceci:
Figure 3
Image

Modifier ce programme est relativement facile, mais imaginez que le programme devienne de plus en plus long avec d'autres contraintes, comme tourner à droite ou à gauche. Les ajouts successifs de blocs DEPLACER peuvent l'alourdir considérablement. C'est là que le concept de Mes Blocs entre en jeu.
Commencez par examiner ce programme; je le commenterai par la suite.

Figure 4
Image

Vous voyez ici 4 blocs Mon Bloc dont les icônes ne figurent pas dans les palettes courantes. Chacun d'entre eux contient les 2 premiers blocs DEPLACER de la figure 1. Tout ce que j'ai fait consiste à les regrouper en un seul Bloc. J'ai de la sorte réduit la longueur du programme de moitié.
Ce bloc a un nom: Avance3-D90, et une icône personnalisée. J'ai maintenant un bloc réutilisable que je peux insérer dans ce programme (ou dans n'importe quel autre futur programme) chaque fois que je souhaiterai faire avancer mon robot de 3 rotations du moteur, et le faire virer à droite de 90 degrés.
Les possibilités sont infinies. En utilisant ce concept, je peux créer de nombreuses collections de blocs NXT-G destinés à des actions spécifiques. Regroupés en paquets dans Mes Blocs, ils sont en permanence réutilisables.
Au bout d'un certain temps, votre collection s'enrichira, et de plus, vous économiserez du temps en évitant de réécrire certaines modules (comme faire un demi tour, avancer de 2 rotations, etc…).

Nous allons à présent aborder la création de ces blocs.

Création de Mes Blocs:
La première étape consiste à écrire les actions répétitives qui seront regroupées dans un Mon Bloc.
1 - Créez un nouveau programme NXT-G. Dans l'espace de travail positionnez les blocs qui composeront une action. Dans notre cas, nous l'avons vu, 2 blocs DEPLACER (3 rotations + virage à droite de 90 degrés).
Cette action sera répétitive, donc réutilisable.
2 - Sélectionnez ces 2 blocs (plusieurs façons de procéder; la plus facile consiste à les inclure dans un rectangle de sélection).

Figure 5
Image
On peut aussi sélectionner chaque bloc en maintenant la touche MAJ appuyée.

3 - A présent, dans la barre de menu, déployez "Edition" et choisissez "Créer un nouveau bloc Mon bloc".

Figure 6
Image

Vous ouvrez une nouvelle fenêtre telle que ci-dessous:

Figure 7
Image
A noter dans la zone de travail la présence des 2 blocs sélectionnés à proximité d'un point de départ.

Complétez les champs par des expressions facilement identifiables. Le nom du bloc est obligatoire; la description facultative.
Figure 8
Image

Cliquez sur le bouton "Suivant" et choisissez une icône pour personnaliser votre nouveau Mon bloc, ou le bouton "Terminer" si vous ne voulez pas personnaliser l'icône.
Figure 9
Image
Vous avez à votre disposition une collection d'icônes pour faire votre choix, que vous pouvez dimensionner et associer à volonté. Il suffit de choisir un ou plusieurs motifs puis de les associer selon vos goûts dans la zone d'édition, (carré blanc). Le résultat est visible en haut et à droite.
Quand vous jugez le travail terminé, appuyez sur le bouton "Terminer".

Votre nouveau Mon Bloc est maintenant accessible dans la "palette personnalisée" et utilisable comme n'importe quel autre bloc.

Figure 10
Image
Ce nouveau bloc est venu s'ajouter à 2 anciens Mes Blocs déjà créés(dans le survol de la palette). Chaque fois que vous créerez un Mon bloc, il viendra s'ajouter à ceux existants. C'est ainsi que petit à petit la collection s'agrandit.
Remarque:
Tous ces blocs personnalisés sont stockés dans un dossier intitulé "Mes blocs" accessible à partir du menu "Edition" > "Gérer la palette personnalisée". On notera qu'ils sont eux-mêmes des petits programmes du même type .rbt.

Fils et plots de données:

Au delà de ce qui vient d'être développé, il faut aussi noter que Mes Blocs peuvent recevoir et envoyer des données par le canal des fils de données.
Cela n'est possible que si les blocs sélectionnés pour constituer Mes Blocs, disposent de fils de données préalablement et impérativement configurés. Les ports d'entrée ou de sortie de ces blocs sélectionnés, laisseront apparaître des ports de données du Mon Bloc nouvellement créé. Cet aspect renforce leur puissance et offre une grande souplesse.
La manipulation des fils de données requiert une certaine habilité, et je vous conseille de vous exercer pour en déterminer leur utilité.

Voici à titre d'exemple un Mon Bloc intitulé "Afficher Valeur":
Figure 11
Image

Ces blocs constituants un affichage (5 au total) ont été sélectionnés dans un programme plus complet qui répète à plusieurs reprises le même mode d'affichage.
Les plots et les fils de données ont été utilisés dans le corps du programme. En transformant cette suite en un Mon Bloc "Afficher valeur", le logiciel a ajouté en tête un plot indépendant "Value" bien visible dans cet exemple. La présence de ce plot "flottant" signifie que ce Mon Bloc peut recevoir en entrée des données numériques. Tous autres types de données sont bien entendu acceptés (texte et logique).

Et voici une manière de l'utiliser dans un extrait de programme NXT-G plus général:
Figure 12
Image

Remarque importante:
Vous noterez que le Mon Bloc intitulé "Top son1" est traversée par une bande zébrée, comme si l'icône était rompue. Cela signifie que le fichier de ce Mon Bloc ne figure pas dans la liste de Mes Blocs en cours d'utilisation.
Il est important de vous assurer que les Mes Blocs utilisés dans vos programmes, sont également stockés dans votre palette personnalisée. Si vous téléchargez ou copiez des programmes NXT-G, vous devez également télécharger ou copier les Mes Blocs qui les accompagnent (sauf s'ils figurent déjà dans la liste).

Quelques exemples utiles:
> Vous pouvez par exemple vous constituer une série de modules sonores composés à partir de blocs SON "Tonalité".
Figure 13
Image la séquence tonalité étant A, A, A et F

Figure 14
Image
la séquence tonalité étant F, A, F, C,A et F
A vous maintenant de composer les airs musicaux de vos robots…

> Un compteur numérique d'incrémentation intitulé "Compteur +" combiné avec un bloc VARIABLE:
Figure 15
Image

En association avec Mon bloc "Affichage valeur", permet une réduction notable de la longueur du programme:
Nécessite la création d'une variable "Compteur".
Figure 16
Image

L'enrichissement des palettes est loin d'être terminé. Des développeurs et des constructeurs de capteurs compatibles NXT fournissent eux aussi des blocs spécifiques qu'il est aisé d'inclure dans le logiciel. Le NXT-G est loin d'avoir montré tout ce dont il est capable, et l'imagination des utilisateurs loin d'être tarie.

Exercez vous et n'hésitez pas a expérimenter ces blocs; vous serez étonnés des résultats, aussi bien pour leur diversité que pour leur concision…
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 5 invités