Lenguajes de programación: ROBOLAB 1. NIVEL INVENTOR En el modo Inventor se podrá crear programas propios sin límites. Tiene 4 niveles, siendo el 1 el más sencillo y el 4 el más complicado. Trabajar en los 4 niveles es parecido, hay un conjunto de comandos básicos y procedimientos que son iguales en todos los niveles. Lo que varía es el número de opciones de programación disponibles. La programación aquí se realiza arrastrando iconos desde varios paneles de funciones y colocándolos en la ventana de programación. Por ejemplo la pantalla principal del nivel 1 del Inventor es la siguiente: La ventana superior (donde pone Robolab Inventor) es la Ventana del Panel, que no se usa en la programación del Inventor pero debe estar abierto para que el programa funcione. Si la cerramos se cierra el resto de barras y ventanas. La Barra de Funciones contiene los iconos de comando que se usan en la programación. Los iconos se recogen de la barra de Funciones y se colocan en la ventana de Diagramas (arrastrándolos). Si se cierra la barra de funciones, ésta puede reabrirse seleccionando en la ventana de diagramas, Ventanas, Mostrar barra de funciones. La Ventana de Diagramas es el lugar donde se crean los programas. La Ayuda se muestra desde la ventana de diagramas, se activa Mostrar Ayuda y aparece una nueva pantalla de ayuda que nos indicará datos sobre cualquier elemento simplemente poniendo el ratón sobre cualquier elemento y la ayuda nos indicará para que sirve cada elemento. Diego Gallardo Maximiano 1
Otra barra de interesante es la Barra de Herramientas, la cual se muestra a partir de Ventanas, Mostrar Barra de Herramientas: Secuencia de programación En cada uno de los niveles del Inventor hay un orden constante para desarrollar el programa, que aunque no son estrictamente necesarios son recomendables. El orden sería: - Iconos Escoger y colocar - Ordenar los iconos de comando - Retirar cualquier icono de comando no necesario - Enlazar los iconos - Bajar el programa - Activar el programa desde el RCX Escoger y Colocar Se utiliza para seleccionar el icono del comando desde la barra de funciones para llevarlo a la ventana de Diagramas. Organizando Sirve para acomodar los comandos en una secuencia en la ventana de Diagramas. Con este icono se mueven todos los comandos juntos. Herramientas de texto Se utiliza para agregar textos o etiquetas al programa. Enlazando Los comandos deben conectarse en el orden que se quiere que se activen. Para unir un comando con otro hay que mover el carrete de hilo desde la esquina superior derecha del comando (fin) hasta la esquina superior izquierda del siguiente comando (Inicio). Diego Gallardo Maximiano 2
Si el alambre no está unido aparece como una línea punteada. Si se ha conectado a una ubicación incorrecta, el alambre aparecerá como una línea negra interrumpida. Si al final existen alambres defectuosos que sobran o son defectuosos se pueden retirar en la opción Editar, Retirar Alambres Defectuosos. Bajar el programa Se hace un click en el botón Activar (icono con la flecha) para bajar el programa al RCX. Si este icono aparece como una flecha rota indica que existe algún error importante en el diseño. Guardar el programa Para guardar cualquier programa en la opción Archivo, Guardar como y se busca la carpeta correspondiente donde guardarlo. Abrir un Programa previamente guardado Se puede abrir un archivo desde la pantalla del menú principal de ROBOLAB si aparece. Si no aparece se abre en Archivo, Abrir y buscándolo en la carpeta correspondiente. 1. INVENTOR NIVEL 1 Si abrimos el nivel Inventor 1 nos aparece un diseño por defecto. En este diseño enciende el motor conectado en el puerto A y la lámpara conectada en el puerto C hasta que el sensor de contacto en el puerto 1 es presionado. Los programas del Inventor varían ligeramente respecto de los programas del Pilot. Deben usar el botón Alto para cortar la potencia a los Puertos A, B, y C. Si no se tiene la señal de alto, la potencia a los puertos A, B y C continuará luego que el programa se cierre. Si no la tenemos ir a Ventanas/Mostrar Barra de Herramientas. Con la flecha podemos elegir cualquier icono y con la tecla suprimir del teclado eliminarlo. También podemos arrastrar el ratón seleccionando varios y suprimirlos. Ejercicio 1 Dentro del nivel Inventor 1 borre todos los iconos menos los semáforos. Seleccione de la barra Funciones un motor en el puerto A y otro en el puerto C en dirección contraria. Los motores funcionarán durante 4 segundos y luego pararan. Ejercicio 2 Cree un programa que: 1. Espere a que el sensor de contacto sea presionado. 2. Roten los motores en los puertos A y C de forma que avance el vehiculo durante 6 segundos. Diego Gallardo Maximiano 3
3. Una vez pasados los 6 segundos retroceda el vehículo hasta que el sensor de contacto sea presionado otra vez. Nota: No olvidar incluir los semáforos de inicio y fin. 2. INVENTOR NIVEL 2 En el nivel 2 del Inventor los programas se crean enlazando los iconos de comandos generales. Estos iconos pueden modificarse con ubicaciones de puertos y niveles de potencia. Se puede incluir cambio de dirección, saltar y aterrizar, ejecutar sonido y tiempo al azar. Los modificadores son iconos que se sitúan en la parte inferior de la Barra de Funciones. En el menú superior elegir Herramientas o Proyecto (dependiendo de la versión) y se cambia al nivel Inventor 2. En el ejemplo inicial se enciende el motor A y la lámpara B a la máxima potencia hasta que el sensor de contacto del Puerto 1 sea presionado. Los comandos enlazados en los motores y luces nos indica la ubicación de los puertos y los niveles de potencia. En la ayuda se puede ver donde conectar los modificadores. En la barra de funciones del Nivel 2 hay tres sub-menús ubicados en la parte inferior de la ventana. Los sub-menús de la barra de funciones son: Esperar por; Modificadores y estructuras. Para visualizarlos se hace click en cualquiera de ellos. Comandos Esperar por Es un sub-menú. Incluye el sensor de luz (que se verá posteriormente). Además los periodos de tiempo permiten programar ciertos tiempos en segundos. El reloj con un dado indica un tiempo al azar. Diego Gallardo Maximiano 4
Modificadores Están localizados en su propio sub-menú. Son usados para especificar puertos, niveles de potencia y constantes. Las constantes se usan para tiempo (en segundos) y para nivel de luz (0-100). Los modificadores deben ser enlazados a los comandos. Se enlazan a la parte inferior izquierda o a la parte inferior derecha de los comandos. En el ejemplo de Inventor 2 se puede ver como están enlazados. Estructuras Las estructuras están localizadas en su propio sub-menú. Se utilizan para crear una lógica de programación de un nivel más alto. Los comandos Saltar y Aterrizar se usan para ir de un lugar a otro dentro del programa. Esto le permite ir a distintas tareas o saltarte pasos. Ejercicio 3 Abre el programa en el nivel Inventor 2. Elimina todos los iconos excepto los semáforos. Copia el siguiente programa: El programa enciende el motor A y C con potencia 3, espera 2 segundos y cambia la dirección del motor C, espera 1 segundo, salta en la flecha roja y aterriza en la inicial para repetir el proceso. Diego Gallardo Maximiano 5
Ejercicio 4 Diseña un programa en el cual el vehículo avanza durante 4 segundos, retrocede durante 4 segundos y así continuamente. Ejercicio 5 (Saltar) Diseña un programa que espere 3 segundos y luego enciende los motores A y C a media potencia (3) rotando hacia la derecha por 2 segundos. Luego de 2 segundos son encendidos al máximo nivel, rotando hacia la izquierda. Esta condición se activa por 2 segundos. El proceso se tiene que repetir continuamente. Ejercicio 6 (Para saltear) Diseña un sistema igual que el anterior pero cambiando ciertos aspectos. El programa espera 3 segundos y luego enciende los motores A y C a media potencia (3) rotando hacia la derecha por 2 segundos. Después de los 2 segundos, el programa sale y luego entra al final del programa. Esto permitirá saltear los comandos: Encender motores A y C a toda potencia en la dirección contraria por 2 segundos. Ejercicio 6 Crear un programa que aumente los niveles de potencia de los motores A y C en intervalos de un segundo. Ejecutar sonido y tiempo al azar Vamos a introducir dos variables nuevas: tiempo al azar y ejecutar sonido. Tiempo al azar funciona de manera que nosotros le añadimos una etiqueta que refleja el número de segundos y el programa trabajará un tiempo al azar de 0 a los segundos que le hallamos puesto. Para añadir la etiqueta de los segundos es una constante numérica que se añade en la barra de modificadores. El icono ejecutar sonido se insertará en la cadena en el momento que queremos que aparezca. Diego Gallardo Maximiano 6
Ejercicio 7 Diseña un programa en el cual los motores conectados en A y C se enciendan con un nivel de potencia 1 por un tiempo al azar entre 0 y 3 segundos. Se ejecute un sonido y el motor C cambie de dirección durante un tiempo al azar entre 0 y 2 segundos. Se ejecutará otro sonido. Ejercicio 8 Tomando como base el ejercicio anterior modifícalo para que el proceso se realice de forma continua. (Hay que utilizar los comandos saltar y aterrizar). 3. INVENTOR NIVEL 3 En este nivel se introducirá las opciones de música, multitareas, recursión y opciones de comando condicional. En el menú superior seleccionamos Herramientas o Proyecto (dependiendo de la versión) y vamos a cambiar Nivel del Inventor. Selecciones nivel Inventor 3. La barra de funciones se amplia de nuevo. El programa pre-determinado del Nivel del Inventor 3 contiene sólo los semáforos de inicio y fin en la ventana de Diagramas. A partir de aquí crearemos el programa desde la barra de funciones. Icono música Iconos comando condicional y unir comando condicional. Esperar por, Estructuras (incl. Unir Comando condicional, Modificadores y Música Programando música El sub-menú de comandos de Música tiene comandos para hacer música y modificadores. Diego Gallardo Maximiano 7
Los comandos son las notas, de la A (La) a la G (Sol) y una pausa. Los modificadores son la duración de las notas, y la escala octava (las flechas hacia arriba y abajo). Añadiendo estructuras a un programa Las estructuras son un sub-menú de la barra de funciones. Las estructuras son útiles en la programación cuando se necesita que el programa verifique condiciones, repita una tarea varias veces, o cuando necesite que más de una tarea se realice a la vez. Vamos a ver para que sirven algunas estructuras: Multitareas Los programas multitareas se usan para activar una o más tareas al mismo tiempo. En los programas anteriores cada comando se ejecuta secuencialmente, o lo que es lo mismo, cada comando se ejecuta justo después del anterior. Con la multitarea se pueden ejecutar más de un alambre a la vez. Por ejemplo el siguiente diseño encendería el motor C y la lámpara A., todo a la vez, hemos realizado dos órdenes a la vez. Cada tarea se activa independientemente de las otras. Diego Gallardo Maximiano 8
Ejercicio 9 Diseña un programa en el cual se encienda una lámpara en B. Luego, se divide y activa dos tareas a la vez. La tarea 1 enciende el Motor C rotando hacia la derecha, hasta que le sensor en el Puerto 1 es presionado. Mientras tanto, la tarea 2 enciende la Lámpara A por 7 segundos. Al final la lámpara B permanecerá encendida, pero el motor C y la lámpara A se tienen que parar. Ejercicio 10 Diseña un programa que active dos tareas a la vez. En la primera cadena los motores A y C giran en un sentido durante 2 segundos, cambian de dirección, esperan dos segundos y se repite la tarea. En la segunda cadena reproduce 6 notas musicales. Comandos condicionales Se utilizan para programar una condición si. Cuando el programa llega a un comando condicional este verifica el valor del dispositivo mostrado en el comando condicional. Si el valor es mayor que el número especificado, el programa seguirá el alambre con el signo mayor que. Si el valor es menor que o igual que el número especificado, el programa sigue el alambre con el signo menor o igual (este proceso se realizará en el caso del sensor de luz, no en el sensor de contacto). El ejemplo siguiente verifica el sensor de contacto en el puerto 1. Si está presionado, el Motor A gira a la derecha a nivel de potencia 4. Si el sensor de contacto no está presionado, el motor A gira a la izquierda con nivel 4 de potencia. Ejercicio 11 Diseña un programa en el cual se cumpla: Diego Gallardo Maximiano 9
1. Si el sensor de contacto está presionado se enciende a media potencia el Motor A durante 5 segundos, luego se para. 2. Si el sensor de contacto no está presionado se enciende el motor C a baja potencia y aumenta el nivel de potencia cada 2 segundos. Recursión Se utiliza para repetir un conjunto de comandos una y otra vez. La recursión tiene que tener un modificador que especifique cuantas veces se deben repetir los comandos entre el inicio de la recursión y el fin de la recursión. En el siguiente ejemplo enciende una lámpara en A media potencia. A continuación, la secuencia de enlace se activa 3 veces. En la recursión, el Motor C se enciende a media potencia, rotando a la derecha hasta que el sensor de contacto es presionado. Luego que el sensor de contacto es presionado, el Motor C invierte la dirección, rotando hacia la izquierda a media potencia hasta que el sensor de contacto es presionado otra vez. Ejercicio 12 Cree un programa que: 1. Se repita 5 veces, encendiendo la Lámpara B y presentando un sonido cada vez que el sensor de contacto sea presionado. 2. Si el sensor de contacto no es presionado, nada debe pasar (sugerencia: use una recursión y un comando condicional) Ejercicio 13 Diseña un programa en el cual se cumpla que: - Si es presionado el sensor de contacto los motores A y C giran en un sentido y a los dos segundos sonará una nota musical. - Si no es presionado los motores giraran en sentido contrario y a los dos segundos sonará otra nota musical distinta. El proceso se repetirá 5 veces. Al final del proceso se puede incluir un sonido para indicar que el proceso total ha finalizado. Diego Gallardo Maximiano 10
4. INVENTOR NIVEL 4 En el menú superior seleccionamos Herramientas o Proyecto (dependiendo de la versión) y vamos a cambiar Nivel del Inventor. Selecciones nivel Inventor 3. La barra de funciones se amplia de nuevo. Es el nivel más alto. Incluye todos los comandos, modificadores, y estructuras de los niveles 2 y 3, además de la capacidad de la comunicación de RCX a RCX. El programa del Nivel 4 del inventor se abre sólo con los semáforos de Inicio y fin y con la barra de funciones. Barra de Funciones del Nivel 4 Los nuevos sub-menús son para inicializar (resetear) dispositivos, avanzar en la comunicación del RCX y establecer contadores variables. A continuación describimos esos nuevos submenús. Comandos del contenedor Se utiliza para seguir la pista de las variables (valores). Puede contar cuantas veces ha pasado algo y hacer referencia como un valor. Diseñamos el siguiente proyecto: Cómo funciona este programa? En primer lugar se asegura que el contenedor está vacío (es una precaución recomendable). Se agrega un valor de 1 al contenedor condicional. Cómo es menor que cinco se irá por la parte inferior y se enciende la lámpara en B, espera 1 segundo, se apaga, salta y aterriza antes del contenedor y se repite el proceso. En el siguiente paso el contenedor suma 2 y así continuamente hasta sumar 5. En el momento que suma 6 se irá por la parte superior, se ejecuta el sonido y finaliza el programa. Diego Gallardo Maximiano 11
Ejercicio 14 Diseña un programa en el cual utilizando contenedores un vehículo avance tres veces durante dos segundos cada vez. Después de haber avanzado tres veces se escuchará un sonido que indique el final del proceso. Comandos de Buzón Se utilizan para la comunicación de un RCX a otro RCX. Comandos de reinicio Tiene los comandos para reiniciar el valor del contenedor, el cronómetro, el sensor de ángulo y el buzón a cero. Esto es de utilidad cuando desea establecer una referencia o punto de inicio. Comandos de comunicación de RCX a RCX Dos a más RCX pueden comunicarse entre sí. Cada RCX debe tener un programa por separado. Para instalar la comunicación, el RCX2 debe esperar una señal (esperar por correo). Cuando el RCX 1 envía la señal (envía correo), el RCX2 ejecutará su programa. Ejemplo Baje este programa al RCX1 Baje este programa al RCX2 En este ejemplo el RCX1 emitirá un sonido bip y esperará hasta que el sensor de contacto sea presionado. Luego que el sensor es presionado envía el correo al RCX2. Cuando el RCX2 recibe el correo, enciende al Motor A por dos segundos. Para activarlo, asegúrese que el Receptor IR en ambos RCX estén frente a frente. Diego Gallardo Maximiano 12