Robolab Inventor 2: Modificadores y saltos
Publicado por Luis González en 28 Mayo 2007
Siguiendo con la traducción libre del manual titulado “Using ROBOLAB”, creado por la Tufts University con el patrocinio de LEGO, para la enseñanza del entorno Robolab y cuya versión original (en inglés) puede descargarse aquí, abordamos hoy en este post el nivel 2 de programación asistida con Robolab Inventor.
En el nivel 2 de Inventor los programas se crean, como es habitual, conectando iconos que representan órdenes o comandos. Pero ahora estos comandos genéricos pueden modificarse, especificando los puertos de entrada o salida y los niveles de potencia.
Los modificadores son también iconos que se conectan a la parte inferior de los iconos de los comandos. De este modo, en lugar de usar la configuración por defecto de los comandos, el nivel de programación 2 de Inventor permite establecer en qué puerto y con qué nivel de potencia se ejecutará cada comando. Si no se especifica nada, se conectarán todos los puertos a la máxima potencia.

En el programa de la figura, por ejemplo, se ponen en marcha los motores conectados a los puertos de salida (A y C) a su máxima potencia (5) hasta que, al activarse el sensor de contacto del puerto de entrada (1), se detienen.
Una paleta de funciones más completa
En el nivel 2 de Inventor, la paleta de funciones muestra los iconos de los comandos genéricos que ya conocemos y tres nuevos botones que conducen a tres submenús: Esperar, Saltar y Modificar.

Esperar
El botón Esperar nos conduce a un menú que ofrece varias opciones para que el procesador espere hasta que se cumpla una condición dada. Entre esas condiciones está la luminosidad detectada por el sensor de luz, que permite ordenar una espera hasta que la luminosidad aumente o disminuya en una cierta cantidad. También encontramos el sensor de contacto, con el que podemos ordenar al procesador que espere hasta que sea activado o liberado:

Los tiempos de espera se manejan con iconos que representan relojes con diversos lapsos de tiempo. El reloj que tiene un interrogante nos permite especificar un tiempo, para lo que será necesario conectar un valor o constante al reloj para especificar el tiempo que debe esperar. También tenemos la posibilidad de ordenar que espere un tiempo aleatorio, representado por un dado. El tiempo de espera aleatoria por defecto está entre 0 y 5 segundos.
Modificadores
Los modificadores de comandos tienen su propio submenú de órdenes: al pulsar en el botón de la paleta de funciones obtenemos la paleta completa de modificadores:

Con los modificadores podemos especificar posiciones de puertos, niveles de potencia y valores o constantes. Las constantes se usan para fijar tanto el tiempo de espera, asignando un valor en segundos, como el nivel de luminosidad del sensor que debe tener un valor entre 0 y 100. Los iconos de los modificadores deben conectarse a los comandos que modifican.
Utiliza la ayuda para ver dónde hay que conectar los alambres de los modificadores. Para activar la ayuda contextual pincha en Ayuda > Mostrar ayuda en contexto. La ventana de ayuda también te proporcionará información acerca de los valores por defecto:

Aquí van algunos ejemplos:
Motor conectado al puerto B se pone en marcha, a un nivel de potencia 2.
Sensor de contacto conectado al puerto de entrada 1.
Lámpara, conectada al puerto A, se enciende a un nivel de potencia 4.
Espera 20 segundos para seguir.
Herramienta de texto
La herramienta de texto, en la paleta de herramientas, puede utilizarse tanto para cambiar los valores de las constantes como para poner etiquetas o comentarios al diagrama del programa. Recuerda que la tecla del tabulador, en tu teclado, sirve para conmutar entre las herramientas de tu caja de herramientas: Selección, Desplazar, Alambre y Texto, tal y como vimos en este artículo anterior.
Construir el programa
Una vez depositados los comandos y sus modificadores en la ventana del diagrama, deben ser colocados en la secuencia en la que queremos que se ejecuten. Utiliza para ello la herramienta Selección para moverlos. La luz verde de la izquierda es la orden de entrada o comienzo y la luz roja de la derecha es la orden de salida o fin. Utiliza el alambre de conexión para unir la salida de cada comando con la entrada del siguiente.
El modificador que establece qué puerto se activa en el ladrillo RCX (A, B, C para las salidas o 1, 2, 3 para las entradas) se conecta a la esquina inferior izquierda del comando. El modificador que fija el nivel de potencia se conecta a la esquina inferior derecha. Una pequeña etiqueta de texto muestra la función de cada terminal en un icono de comando cuando la herramienta Conectar se sitúa encima.
Si se conecta un modificador en un terminal incorrecto, el programa mostrará una línea de trazos.
Es posible conectar más de un modificador a un mismo comando. Al conectar un puerto más al modificador anterior hará que todos los puertos especificados se activen. En el ejemplo de la figura, sendos motores conectados a los puertos A y B se ponen en marcha con un nivel de potencia 4.
Especificar más de un nivel de potencia generará un error, el alambre de conexión aparecerá como una línea de trazos y el programa no correrá.
Estructuras
Las estructuras tienen su propio submenú. Se crean para enriquecer las posibilidades de un programa. Los comandos Saltar y Aterrizar se usan para ordenar al procesador que se desplace desde una posición a otra del programa. Esto permite ejecutar bucles o saltarse pasos.

En el ejemplo de este diagrama, el programa espera durante 10 segundos y pone en marcha los motores A y C hacia la derecha, a una potencia de 3, durante dos segundos. Una vez transcurridos los 2 segundos, hace girar a ambos motores hacia la izquierda a la máxima potencia durante otros 2 segundos. A continuación, abandona la secuencia donde está la flecha de salto roja y regresa atrás en la secuencia (en el punto en que le indica la flecha de aterrizaje roja). El comando que se encuentra tras la flecha de aterrizaje es el que se ejecutará a continuación, poniendo en marcha los motores A y C a una potencia de 3 y empezando ne nuevo de este modo. El programa seguirá ejecutándose, saltando una y otra vez, hasta que sea presionado el botón Run o el botón On-Off del ladrillo RCX. Nota: debes tener un único punto de aterrizaje para cada salto en tu programa.

En este otro ejemplo, el programa espera 10 segundos y pone en marcha los motores conectados a los puertos A y C, hacia adelante, durante 2 segundos. Las flechas rojas de salto y aterrizaje pasan por alto y evitan que se ejecute la siguiente secuencia, en la que los motores A Y C hubiesen girado en sentido contrario durante 2 segundos si no existieran las flechas rojas.
Ejercicios prácticos
La guía Using Robolab sugiere los siguientes ejercicios para practicar la programación en el nivel Inventor 2:
- Crea un programa que
- Espera hasta que un sensor de contacto, conectado al puerto 3, sea pulsado para encender la lámpara del puerto A a media potencia.
- Mantiene la lámpara encendida hasta que el sensor de contacto es liberado.
- Cuando el sensor de contacto es liberado, apaga la lámpara A y hace girar los motores B y C durante 7 segundos.
- Detiene los motores y termina el programa
- Crea un programa que va incrementando el nivel de potencia de los motores conectados a los puertos A y C, en intervalos de 1 segundo. Descárgalo en el ladrillo RCX y pruébalo.
