Pregunta

Estoy desarrollando un robot para una clase de ingeniería. A los fines de la clase, debo usar el lenguaje de programación NXT. Para moverse, el robot necesita seguir una línea negra sólida.

Si el robot pierde la línea, la tengo escanear a la izquierda durante 1 segundo, o hasta que alcance una línea negra. Si no se encuentra ninguna línea, escanea hacia la derecha durante 2 segundos, por lo que se alcanza la posición inicial, se logra 1 segundo más o rotación.

Tengo el bucle configurado para que si no se ha encontrado la línea, el robot continúa moviéndose. Eso se ejecuta durante un período completo de 1 segundo. Si se encuentra la línea, el movimiento se detiene, pero el segundo completo aún tiene que completarse. En última instancia, eso significa que mi programa funciona perfectamente, pero es realmente muy lento.

TL; DR ¿Hay alguna manera de hacer bucles con dos condiciones de salida en el entorno de programación LEGO Mindstorm? ¿O después de 1 segundo ha transcurrido o un sensor obtiene la entrada deseada?

¿Fue útil?

Solución 3

Mindstorms no tiene una función o.

La solución es crear una variable de salida, luego tener dos declaraciones de conmutador. En el ejemplo anterior, tenía una declaración de interruptor con un temporizador y el otro con la salida del sensor. Establezca la variable de salida en falso, luego dentro de un bucle de tiempo, ejecute hasta que la variable de salida sea verdadera.

Si el temporizador expira, establezca la variable en True, de lo contrario, ignore la variable de salida. Haga lo mismo con la salida del sensor.

Esta es una solución desordenada y bastante larga, pero resuelve el problema perfectamente dentro del sistema LEGO Mindstorms bastante limitado.

Otros consejos

Los últimos dos bloques son bloques lógicos establecidos en "o". En este caso, se observan 3 sensores. Si alguien está tropezado, el programa cae del bucle.

.

Esto es de la página 86 de http://www.hightechkids.org/sites/default/files/coachinglibrary/fll_programming_101_nxt_g.pdf

Lo que podría hacer es hacer que el tiempo de espera sea más corto (100 ms, por ejemplo) y detenerse si la línea se encuentra o el bucle se ejecuta 10 veces.

No soy un experto en tormentas mental, pero espero que tenga una función o.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top