Forum des NXTiens

   Le 30/08/11 à 18h20 Citer      

Booster Fronde

Groupe: Membre

Sexe:
Inscrit le: 08/07/11
Messages: 3
Bonjour,

Cela fait 2 mois que je n'arrive pas a bien sortir d'une boucle. Je m'explique :

Je crée une boucle avec comme condition de sortie que le capteur tactile soit heurté. Je met dans cette boucle par exemple le bloc "déplacer" et le bloc "attendre 2 secondes". Et bien lorsque le bloc déplacer est achevé, si j'appuie sur le capteur tactile ( pour sortir de la boucle ), je devrai attendre que le bloc attendre soit achevé.

Donc en fait j'aimerais pouvoir sortir a TOUT MOMENT d'une boucle ( en l’occurrence en heurtant le capteur tactile ).

J’espère que j'ai été clair :hehe

Merci d'avance et merci de nous offrir de si beau tutoriels :top

ExiTeD



Edité par ExiTeD Le 30/08/11 à 18h39

pm    
   Le 01/09/11 à 13h47 Citer      

Administrateur

Groupe: Administrateur

Sexe:
Inscrit le: 24/04/10
Messages: 129
Lieu: France
Bonjour ExiTed,

Il est vrai qu'avec une description du projet et une image du programme en question, cela serait un peu plus clair. ;)

Si je comprend bien et pour résumer :

  • Une boucle avec condition sur capteur tactile pressé.
  • A l'intérieur, un déplacement puis une pause de 2 secondes.


Comme le programme attend 2 secondes après le déplacement, il ne scrute le capteur tactile qu'après ces 2 secondes.

Hors tu veux que ce le programme puisse sortir de la boucle dès que le capteur tactile soit pressé ...

Je ne sais pas si cela te conviendra comme solution simple, mais à tu pensais à inverser l'ordre de tes blocs qui se trouve dans la boucle ?

C'est à dire qu'au lieu de mettre le bloc "Déplacer" puis le bloc "Attendre", tu met d'abord le bloc "Attendre" puis le bloc "Déplacer" ...

De cette manière, la capteur tactile est scruté dès que le déplacement est terminé.

Si le capteur n'est pas pressé, la boucle recommence est la pause de 2 secondes est effectué.

Si le capteur est pressé, le programme sort de la boucle et fait ce qu'il a à faire.

Sinon, selon le projet et donc le programme à faire, il reste la solution d'un bloc "Commutation" ... Voir d'un bloc "Capteur tactile" et l'utilisation de fils de données logique !

Tous ceci est traité dans les tutoriels sur le site.

Donne une description de ton projet et joint une image du programme pour que l'on puisse te fournir plus d'aide si nécessaire.

A+
____________________

pm http://www.sitedunxt.fr    
   Le 26/09/11 à 19h56 Citer      

Booster Fronde

Groupe: Membre

Sexe:
Inscrit le: 08/07/11
Messages: 3
Merci beaucoup pour cette reponse :)

Mais je ne souhaite pas changer de place les blocs ( enfaite j'ai pris cet exemple pour ne pas dire mon vrai programme qui est lui plis compliqué ).
J'ai éssayé avec des fils de données, avec une autre programmation en parallele mais cela engendre un nouveau probleme ou ne marche pas .
On ne peut pas le faire avec un autre logitiel ?
Je fournirais une photo dans mon prochians message.


PS : J'ai relu ton mangnifique et hylarant tutoriel sur les fils de donnés :) mais il ne repond pas a ma question.

pm    
   Le 09/08/12 à 10h36 Citer      

Booster Minigun

Groupe: Membre

Sexe:
Inscrit le: 06/08/12
Messages: 42
Bonjour,
Je pense que au lieu d'utiliser un bloc "attendre" tu pourrai peut être utiliser un bloc "minuteur", par exemple comme cela.
____________________
@ plus :lu.
La nouvelle apparence du site est magnifique! :top

pm    
   Le 12/08/12 à 17h52 Citer      

Booster Minigun

Groupe: Membre

Sexe:
Inscrit le: 06/08/12
Messages: 42
up!!
____________________
@ plus :lu.
La nouvelle apparence du site est magnifique! :top

pm    
   Le 27/02/15 à 17h13 Citer      

Booster Fronde

Groupe: Membre

Sexe:
Inscrit le: 27/02/15
Messages: 1
Bonjour,

Je ne sais pas si ce sujet est toujours d'actualité.

J'ai rencontré le même type de problème en voulant faire un programme pour compter des bandes noires : il faut pouvoir arrêter quand on veut, sinon le programme attend que le capteur de luminosité réagisse avant de passer à la suite.

Le problème du bloc boucle contrôlé par un capteur tactile est qu'il doit terminer la boucle en cours quand la condition de fin est valide (l'arrêt de boucle n'est pas immédiat). Il me semble que la solution passe par l'utilisation de boucles plus courtes, associées à des conditions, qui se répètent dans la boucle contrôlée par le capteur tactile. J'utilise aussi des variables avec des conditions sur celles-ci.

La solution proposée par an74ho (voir plus haut) est intéressante, mais il y a à mon avis une erreur de positionnement du bloc "réinitialisation du minuteur" : il faut placer celui-ci derrière le bloc "déplacer", dans la condition vrai du bloc "commutation"...

Voilà, si ça intéresse toujours quelqu'un !...

pm jacques.montaron@fnac.net    
1 Utilisateur en ligne :: 0 Administrateur, 0 Modérateur, 0 Membre et 1 Visiteur
Utilisateur en ligne: Aucun membre connecté
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie