Rss Les fils de données

Sommaire:

 

Les données de type logique



Pour mettre en application l'utilisation de fils de données de type logique, je vous propose de créer un premier programme simple vous permettant d'allumer ou d'éteindre la lampe de votre capteur de lumière grâce au bouton orange situé sur votre NXT.

Voici donc le programme à réaliser :






Pas de panique, ce programme est très simple à comprendre.

Comme d'habitude, une boucle sans fin pour faire s'exécuter le programme en permanence.

A l'intérieure de celle-ci, juste deux petits blocs.

Le premier, un bloc "Capteur Boutons NXT" que l'on va laisser dans sa configuration par défaut puisqu'elle nous convient parfaitement.
Il fera changer l'état de sa sortie logique "Oui/Non", qui passera donc de l'état Faux à l'état Vrai, lorsque le bouton d'entrée orange sera enfoncé.
Comme l'indique le tableau ci-dessous tiré de la documentation du bloc "Capteur Boutons NXT".



Et le deuxième, un bloc "Lampe de couleur" lui aussi laissé dans sa configuration d'origine. C'est à dire en lampe de couleur rouge.
Ce dernier recevra cette donnée logique sur son plot d'entrée "Action", qui éteindra la lampe si la donnée vaut la valeur Faux et l'allumera si la donnée vaut la valeur Vrai.
Comme l'indique le tableau ci-dessous tiré de la documentation du bloc "Lampe de couleur".



Le résultat simple de cela est que, lorsque vous appuyez sur le bouton orange de votre NXT, la lampe s'allume.
Et que celle-ci s'éteint lorsque vous n'appuyez plus sur le bouton orange de votre NXT.

Toujours simple, non ... :lol


Utilisation du bloc "Commutation" avec les fils de données logique




Au même titre que n'importe quel autre bloc, le bloc "Commutation" est capable de recevoir et de gérer une donnée de type logique envoyé par un fil de donnée.

Pour illustrer ce propos, nous allons réaliser un programme presque aussi simple que celui ci-dessus.

Ce programme aura comme tâche de faire changer la couleur de la lampe du capteur de lumière en fonction de l'état, appuyé ou non, du bouton orange de votre NXT.

Mais attend là ...

Pourquoi passer par des fils de données pour faire ça, alors qu'il serait plus simple d'utiliser un bloc "Commutation" configuré en mode capteur de bouton NXT orange ?

C'est une très bonne question et je suis d'accord avec vous.

Mais je vous répondrez que ce programme n'est là que pour vous montrer la possibilité d'utiliser les fils de données avec un bloc "Commutation" et que, plus tard dans vos programmes, le fil de données ne viendra pas toujours d'un capteur mais probablement du résultat d'une comparaison précédente.

Et là, vous ne pourrait pas faire autrement que d'utiliser un fil de données avec votre bloc "Commutation".

Voici donc le programme à réaliser :








Là encore, pas de panique, c'est on ne peut plus simple.

Toujours cette boucle sans fin pour faire s'exécuter le programme en permanence.

A l'intérieur de celle-ci, un bloc "Capteur Boutons NXT" que l'on laisse dans sa configuration par défaut puisqu'elle nous convient parfaitement comme précédemment.
Il fera changer l'état de sa sortie logique "Oui/Non", qui passera donc de l'état Faux à l'état Vrai, lorsque le bouton d'entrée orange sera enfoncé.

Jusque là, rien de nouveau. C'est la même chose que le précédent programme.

La nouveauté se trouve au niveau du bloc "Commutation" qui cette fois ne sera plus contrôlé par un capteur, comme nous l'utilisions jusqu'ici, mais au contraire par une valeur.
C'est pourquoi il vous faut ici changer le paramètre Contrôle du bloc "Commutation" dans son panneau de configuration, pour le passer de l'option Capteur à celle de Valeur.

Vous remarquerez de ce fait, dans le panneau de configuration du bloc "Commutation", que les paramètres Capteur, Port et Action sont remplacées par de nouveaux paramètres nommées Type et Conditions.

Ces dernières, comme leurs noms l'indique, vous permettent d'indiquer le type de donnée que va recevoir le bloc "Commutation" ainsi que les conditions de commutation qui feront choisir au bloc le rayon de séquence qui sera exécuté par le programme.

Ici l'option Type utilisée sera celle par défaut puisqu'il s'agit du type logique et que c'est justement le type de donnée que devra traiter le bloc "Commutation". Notez qu'il existe autant de possibilités que de type de donnée, à savoir logique, numérique et texte.
Remarquez également à droite dans le panneau de configuration les conditions Vrai et Faux dans l'option Conditions.

Cela étant dit, le fonctionnement du bloc "Commutation" reste le même qu'auparavant.
Si la valeur de la donnée logique est vrai, c'est le rayon de séquence supérieur qui sera exécuté par le programme.
Si la valeur de la donnée logique est faux, c'est le rayon de séquence inférieur qui sera exécuté par le programme.

Du coup, tout s'explique simplement.

Si vous appuyez sur le bouton orange de votre NXT, la valeur renvoyée par le fil de donnée logique du bloc "Capteur Boutons NXT" est vrai et c'est donc le rayon de séquence supérieur du bloc "Commutation" qui sera exécuté par le programme. Donc le bloc "Lampe de couleur" configuré en couleur verte.

Si vous n'appuyez pas sur le bouton orange de votre NXT, alors la valeur renvoyée par le fil de donnée logique du bloc "Capteur Boutons NXT" est faux et c'est donc le rayon de séquence inférieur du bloc "Commutation" qui sera exécuté par le programme. Donc le bloc "Lampe de couleur" configuré en couleur bleu.

Ce n'est pas plus compliqué que ça ! :p

Notez également que vous avez la possibilité de faire rentrer un fil de données à l'intérieur d'un bloc "Commutation", mais uniquement si celui-ci est configuré dans son panneau de configuration pour ne pas être vue à plat.




Dans l'exemple ci-dessus, le résultat de la comparaison de la valeur de distance mesuré par le capteur d'ultrasons avec la valeur de déclenchement définit dans son panneau de configuration est envoyée par un fil de données logique au bloc "Commutation" alors que cette même valeur de distance est envoyée par un fil de données numérique à un bloc "Moteur".


Utilisation du bloc "Boucle" avec les fils de données logique




De même, le bloc "Boucle" est capable de recevoir et de gérer une donnée de type logique envoyé par un fil de donnée.

Pour illustrer ce propos, nous allons réaliser un programme très simple.

Ce programme aura comme tâche de jouer un son de sonar en boucle jusqu'à ce que le bouton orange de votre NXT soit pressé.
Une fois le bouton orange enfoncé, le programme sortira de la boucle et jouera un son d'applaudissement.

Ma question est la même que celle posée avec le bloc "Commutation" ...

Pourquoi passer par des fils de données pour faire ça, alors qu'il serait plus simple d'utiliser un bloc "Boucle" configuré en mode capteur de bouton NXT orange ?

C'est toujours une très bonne question et je suis toujours d'accord avec vous.
Mais ma réponse sera la même ... Ce programme n'est là que pour vous montrer la possibilité d'utiliser les fils de données avec un bloc "Boucle" et que, plus tard dans vos programmes, le fil de données ne viendra pas toujours d'un capteur mais probablement du résultat d'une comparaison précédente.

Et là, vous ne pourrait toujours pas faire autrement que d'utiliser un fil de données avec votre bloc "Boucle".

Voici donc le programme à réaliser :







Ici, la nouveauté se trouve au niveau du bloc "Boucle" qui cette fois sera contrôlé par un fil de données logique.

C'est pourquoi il vous faut ici changer le paramètre Contrôle du bloc "Boucle" dans son panneau de configuration, pour le passer à l'option Logique.

Vous remarquerez de ce fait, dans le panneau de configuration du bloc "Boucle", que le paramètre Jusque refait son apparition.
Le paramètre Jusque dispose de deux conditions de sortie de boucle, Vrai ou Faux.

Nous laisserons ici la condition par défaut, à savoir Vrai, puisqu'elle nous conviendra très bien pour ce programme.
Mais celle-ci peut très bien être configuré à Faux si le besoin s'en fait sentir dans un de vos programme.

Cela étant, le fonctionnement du bloc "Boucle" reste le même qu'auparavant.
Tant que la condition n'est pas remplie, la boucle continue d'exécuter les blocs se trouvant à l'intérieur d'elle-même.
Si la condition est remplie, alors le programme sort de la boucle et exécute les blocs suivants.

Du coup, dans le cas comme ici où la condition de sortie de boucle est configurer sur Vrai, l'explication est simple.

Si vous n'appuyez pas sur le bouton orange de votre NXT, alors la valeur renvoyée par le fil de donnée logique du bloc "Capteur Boutons NXT" est faux. Dans ce cas, la boucle continue l'exécution du bloc "Son" configuré pour jouer un son de sonar jusqu'à ce que sa condition de sortie de boucle soit remplie.

Si vous appuyez sur le bouton orange de votre NXT, la valeur renvoyée par le fil de donnée logique du bloc "Capteur Boutons NXT" est vrai, la condition de sortie de boucle est remplie et donc le programme sortira de la boucle et exécutera le bloc "Son" configuré pour jouer un applaudissement.

Ce n'est pas très compliqué, avouer ! :p

 
 « Page précédente
Les données de type texte
 1  2  3  4  5  6  7 
Page suivante »
Les données de type numérique 
 
 
2 Notes
Ecrit par: FRED_80 Le: 10/08/11