Question

Je développe un robot pour une classe d'ingénierie. Aux fins de la classe, je suis obligé d'utiliser le langage de programmation NXT. Pour déplacer, le robot doit suivre une ligne noire.

Si le robot perd la ligne, je l'ai balayage vers la gauche pendant 1 seconde, ou jusqu'à ce qu'il atteigne une ligne noire. Si aucune ligne se trouve il scanne à droite pendant 2 secondes si la position initiale est atteinte, 1 seconde de plus ou de rotation est atteint.

J'ai la boucle mis en place afin que si la ligne n'a pas été trouvée, le robot continue à se déplacer. Cela va pour une période de 1 seconde à temps plein. Si la ligne se trouve, l'arrêt du mouvement, mais la pleine seconde doit encore compléter. En fin de compte, cela signifie que mon programme fonctionne parfaitement, mais il est vraiment très lent.

tl; dr est-il un moyen de faire des boucles avec deux conditions de sortie dans l'environnement de programmation LEGO Mindstorm? Soit après 1 seconde est écoulée, ou un capteur reçoit l'entrée souhaitée?

Était-ce utile?

La solution 3

Mindstorms ne possède pas de fonction OU.

La solution est de créer une variable de sortie, alors deux instructions switch. Dans l'exemple ci-dessus, j'ai eu une instruction switch avec une minuterie, et l'autre avec la sortie du capteur. Définissez la variable de sortie sur false, puis à l'intérieur d'une boucle while, exécutez jusqu'à ce que la variable de sortie est vrai.

Si le délai expire, définissez la variable true, sinon ignorer la variable de sortie. Faites la même chose avec la sortie du capteur.

Ceci est un désordre et d'une solution assez longue, mais il résout parfaitement le problème au sein du système LEGO Mindstorms plutôt limité.

Autres conseils

Les deux derniers blocs sont des blocs logiques réglés sur « OU ». Dans ce cas, 3 capteurs sont surveillés. Si quelqu'un est déclenché le programme tombe hors de la boucle.

Ceci est de la page 86 du http: //www.hightechkids .org / sites / default / files / CoachingLibrary / fll_programming_101_nxt_g.pdf

Ce que vous pouvez faire est de faire le délai plus court (100 ms par exemple) et de l'arrêt si la ligne se trouve la boucle OU a couru 10 fois.

Je ne suis pas expert en Mindstorms, mais je pense qu'elle doit avoir une fonction OU.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top