Programación no lineal: |
|
Es el momento de realizar programas algo más complejos,
introducir condiciones y utilizar varias de las entradas y salidas
estudiadas. Usaremos las
etiquetas para dirigir el flujo del programa. |
|
ETIQUETAS, SALTOS Y RECURSIVIDAD |
|
59 - Crea un programa como el siguiente para el circuito de la figura. se trata de encender una bombilla durante 3 segundos y mantenerla apagada después otros 3 segundos. |
|
60 - Ahora pulsa el botón "Etiqueta" para introducir un marcador. En la ventana que se abre teclea el nombre BOMBILLA para esta etiqueta. |
|
61 - Sitúa la Etiqueta al principio del programa anterior. |
|
NOTA: Una etiqueta sirve para marcar ciertos puntos-clave
dentro de un programa. No produce ningún efecto en él.
Además, podemos "saltar" desde cualquier punto del programa
hasta esa posición, utilizando el comando "Salta a..." que
veremos a continuación. |
|
62 - Pulsa el botón "Salta a..." y en la ventana que se abre teclea el nombre de la etiqueta a la que queremos que salte el programa, en este caso, BOMBILLA. |
|
63 -Coloca la instrucción "SALTAR A" al
final del
programa anterior, que quedará como aparece a la derecha.
Guarda el programa con el nombre: recursivo. |
|
64 - Prueba el programa "recursivo" mediante la orden "Ejecutar".
Como
verás, cada vez que termina vuelve a saltar al principio,
empezando de nuevo. Un programa que se repite indefinidamente se dice que es recursivo. La única forma de interrumpir este programa es mediante el botón "Parar". |
|
DIAGRAMA DE FLUJO de "recursivo": |
|
PROPUESTA 6: hacer recursivo |
|
65 - Modifica el programa repeticiones1 para que, en lugar de repetirse 3 veces, lo haga de forma continuada. Guárdalo con el nombre recursivo2. Dibuja el diagrama de flujo de recursivo2. |
|
INTRODUCIR CONDICIONES EN EL PROGRAMA |
|
- SI... FIN SIEl comando "SI" introduce una condición en el programa. Si ésta se cumple se ejecuta una acción (o varias) y en caso contrario no se ejecuta. Después de esto, el programa proseguirá leyendo las instrucciones que hay tras la etiqueta "FIN_SI". |
|
66 - Monta el circuito siguiente, con un interruptor conectado a la entrada E1 y una bombilla en la salida S1. NOTA: En lugar de un
interruptor puedes usar un cable conectado a +5V, con el que tocar la
entrada E1 para activarla. 67 - Abre un nuevo programa en Motores v1.61 |
|
68 - Pulsa el botón SI... y verás que aparece la siguiente ventana, donde se puede escoger la condición. Ésta siempre se refiere a una de las entradas y a si está activada o desactivada. Vamos a escoger la condición de que la entrada 1 esté activada. |
|
69 - Al escoger la condición aparecen las siguientes dos líneas en el nuevo programa. Entre ambas hay que situar las órdenes que queremos que se ejecuten cuando se cumpla la condición. |
|
70 - Añadiremos la orden de activar la salida S1 (para que se encienda la bombilla) si se cumple la condición. Para que se aprecie el efecto, el encendido lo prolongaremos durante 2 segundos. Debemos situar la orden entre SI y FIN_SI para que se ejecute sólo si se cumple la condición. |
|
71 - Se cumpla o no la condición, la bombilla debe quedar apagada. Por eso se añade al final la orden de desactivar S1. Como esta acción debe cumplirse en cualquier caso, se sitúa después de la orden FIN_SI. |
|
72 - Tal y como ha quedado, el programa sólo es leído una vez. Queremos que el programa permanezca funcionando, para que la bombilla se encienda siempre que se active E1. Por ello hacemos recursivo el programa añadiendo una etiqueta al principio y un salto a ella desde el final. |
|
73 - Guarda el programa con el nombre: condicion. Pruébalo para observar su funcionamiento. |
|
DIAGRAMA DE FLUJO de "condicion": |
|
-SI...SI NO... FIN SILa instrucción "SI_NO" sólo puede usarse combinada con el comando "SI". Y debe situarse incluyéndola entre los comandos "SI" y "FIN_SI". Hemos visto que la orden "SI" presentaba una condición y, si esta se cumplía, se ejecutaba cierta acción. Pues bien, si a continuación añadimos la orden "SI_NO" podemos además hacer que, si no se cumple la condición anterior, se ejecute otra acción distinta. Tras analizarse ambas condiciones, el programa prosigue leyendo tras la etiqueta "FIN_SI". |
|
74 - Vamos a utilizar el mismo circuito anterior pero mejoraremos el funcionamiento del programa. |
|
75 - Crea este nuevo programa, utilizando el comando SI... como hemos estudiado antes. Se trata de que si la entrada 1 está activa, se enciende la bombilla (Salida 1), pero en este caso se deja activada de forma permanente. |
|
76 - Si pinchas con el ratón sobre algún lugar entre las etiquetas SI... y FIN_SI verás que en la barra de herramientas se "ilumina" el botón SI_NO. Esto ocurre porque este comando sólo se puede utilizar situándolo entre dichas etiquetas. |
|
77 - Añade la instrucción SI_NO. Sitúala en la posición en que aparece a la derecha. |
|
78 - Tras el comando SINO insertaremos la orden que deseamos que se ejecute cuando NO esté activa la entrada 1, que consistirá en desactivar la salida 1. |
|
79 - Finalmente, hacemos recursivo el
programa, añadiendo las órdenes oportunas. Así
conseguimos que esté siempre preparado para responder
cuanto
activemos la entrada 1. |
|
80 - Guarda el programa con el nombre condicion2. Pruébalo y observa las diferencias con el anterior (condicion). Responde ahora a las preguntas:
|
|
DIAGRAMA DE FLUJO de "condicion2": |
|
PROPUESTA 7: Saltos condicionales
|
|
Si combinamos condiciones, etiquetas y saltos, podemos hacer que, dependiendo de que se cumpla o no una condición, el programa salte a una intrucción o a otra. Esto se llama "salto condicional". |
|
81 - Vamos a realizar el programa siguiente. Pero lo haremos paso a paso, para analizarlo a la vez. |
|
82 - El circuito es el siguiente. Necesitas un motor, una bombilla y dos interruptores, conectados de la forma que aparece. Por supuesto, aunque no aparece en el esquema, para no complicarlo, habrá que conectar las entradas +3V/0/-3V al convertidor de tensión. A continuación estudiaremos el programa. |
|
83 - En la primera parte del programa, introducimos una condición: si la ENTRADA 1 está activa, el programa salta a la etiqueta BOMBILLA, y si no, salta a donde está la etiqueta MOTOR. El programa es recursivo para que sea leído continuamente y así se produzca el efecto deseado si se da alguna de las condiciones señaladas. |
|
84 - A continuación aparece una serie de órdenes encabezadas por la etiqueta BOMBILLA. Estas órdenes activan la salida 1 para que se encienda la bombilla, y desactivan el motor 1, por si acaso estaba activo. Tras estas acciones, el programa vuelve a saltar al INICIO para que vuelva a leer la entrada 1, por si ha cambiado de estado. |
|
85 - Un poco más adelante se sitúan otras órdenes precedidas por la etiqueta MOTOR. En este caso se desactiva la salida 1 (para apagar la bombilla si estaba encendida) y se activa el motor. Al final, se vuelve a saltar a la etiqueta INICIO. |
|
86 - Entre los distintos bloques del programa se insertan líneas en blanco para distinguirlos. Esto se hace con el comando correspondiente del menú "Añadir una acción". |
|
87 - Una vez completado el programa guárdalo con el nombre: alterno. |
|
Ver apartado 83 |
|
Ver apartado 84Ver apartado 85 | |
PROPUESTA-ANÁLISIS 8: Depurar el programa |
|
88 - Si en el programa "alterno" anterior eliminas la línea número 70, que contiene un salto al INICIO, observarás que sigue funcionando correctamente. Habíamos dicho que esta orden hacía recursivo el programa.
Para ayudarte a responder a las preguntas, observa cómo quedan el programa, y el diagrama de flujo completos (insertando las partes del motor y la bombilla en el esquema general). Una vez analizado, contesta a las preguntas anteriores en tu cuaderno. Modifica tú también el programa y guárdalo con el nombre alterno2. |
PROGRAMA "alterno2":
|
DIAGRAMA DE FLUJO de "alterno2": |
|
PROPUESTA-ANÁLISIS 9: Condiciones anidadas |
|
A veces es necesario incluir unas condiciones dentro de otras, por ejemplo, vamos a suponer que estamos controlando el movimiento de un ascensor: Estoy en un tercer piso y desde allí quiero subirme al ascensor, que está parado en otra planta. Entonces pulso el botón de llamada. En ese instante, el motor del ascensor debe empezar a funcionar, pero ¿en que dirección? ¿el ascensor tiene que subir o debería bajar? Dependerá al menos de otra condición: que el ascensor en este momento esté situado más abajo del tercero o más arriba. Cuando una condición depende de otra, se dice que está "anidada". Pero en Motores v1.61, si en un programa creas una condición, con el comando SI... FIN_SI, verás que entre estas dos órdenes no puede incluirse otra nueva condición del tipo SI...FIN_SI. ¿Cómo se puede introducir una condición dentro de otra? Utilizando el salto a una etiqueta, como se hizo en el programa anterior. Vamos a verlo en el programa siguiente. |
|
89 - Este programa es una modificación del anterior para controlar que un motor gire en un sentido o en otro. Copia el programa y guárdalo con el nombre control-motor. Esta vez no explicaré el programa, analízalo tú para entender su funcionamiento. Observa que se ha dividido en secciones, intercalando líneas en blanco para que sea más fácil observar las partes. RESPONDE en tu cuaderno a las preguntas siguientes: 90 - Fïjate en las entradas y salidas que se utilizan. ¿Cuáles son? 91 - ¿Qué componentes eléctricos hace falta? |
|
92 - Dibuja el esquema de las conexiones del circuito basándote en el modelo de placa siguiente. |
|
93 - Dibuja el diagrama de flujo del programa. |
|
94 - Monta el circuito y comprueba su funcionamiento. |
|
|