Inicio » Programacion » Facilino » Facilino Tutorial » Ejemplo 2: Manejo de bucles en Facilino

Ejemplo 2: Manejo de bucles en Facilino

Aprende a utilizar instrucciones de bucle en Facilino.

En esta entrada se explica un sencillo ejemplo en el que el usuario introduce un valor a través del Monitor de Facilino y Arduino realiza una operación el número de veces especificado (en este caso simplemente haremos parpadear el LED de Arduino).

Empezamos mostrando al inicio del programa un mensaje de texto solicitando al usuario que introduzca un número. En la categoría ‘Comunicaciones’ utilizamos la instrucción ‘Imprimir por puerto serie con salto de línea’ y en la categoría ‘Texto’ utilizamos una cadena de texto e introducimos la frase mostrada:

Ahora en la categoría ‘Variables’ declaramos una nueva variable con la instrucción ‘Declarar variable’ (es una variable local, es decir, que sólo tiene validez localmente donde es declarada). En el nombre de la variable introducir ‘repetir’ e inicializar su valor a 0 (constante numérica de la categoría ‘Matemáticas’):

Ahora, queremos obtener un número (a través del puerto serie) que el usuario ha de introducir, por este motivo, debemos primero verificar si hay algún dato disponible a través del puerto serie:

Dentro de ‘ejecutar’ introduciremos todas las instrucciones que queramos una vez estamos seguros de que hay un dato disponible en el puerto serie. Desde el ‘Monitor’ de Facilino podemos mandar carácteres ASCII por el puerto serie, pero estos no son números! Si queremos interpretar un carácter ASCII como un número debemos utilizar la instrucción ‘Leer entero por el puerto serie’, que convertirá el carácter ASCII en un valor numérico. Combinamos esa instrucción con la instrucción que asigna el valor de la variable ‘repetir’ (dentro de la categoría ‘Variables’):

De esta manera, la variable ‘repetir’ tomará el valor numérico que ha introducido el usuario. Ahora ya estamos en disposición de realizar la operación que queramos un número de veces. La instrucción ‘Contar con … desde … hasta …’ (en la categoría ‘Control’) parece en principio idónea para este propósito. No obstante, esta instrucción requiere del uso de constantes, no variables, en los campos ‘desde’ y ‘hasta’, porque necesita saber si tiene que hacer la operación de contar incrementando o decrementando, según los valores introducidos. Dado que el número de veces que vamos a repetir la operación en este ejemplo es variable, utilizaremos la instrucción ‘mientras/hasta’ en la categoría ‘Control’:

A partir de aquí tenemos varias opciones de generar un bucle. En este ejemplo, la operación que repetimos es mostrar por el puerto serie la frase ‘Me repito como el ajo…’ (lógicamente esto debe de reemplazarse por algo de mayor interés):

  • Repetimos mientras la variable ‘repetir’ sea mayor que 0. Dentro del bucle debemos decrementar el valor de la variable ‘repetir’.

  • Repetimos hasta que la variable ‘repetir’ sea igual a 0. Dentro del bucle debemos decrementar el valor de la variable ‘repetir’.

  • Creamos una nueva variable, p.e.: ‘i’, que inicializamos a 1 y repetimos mientras la variable ‘i’ sea menor o igual que ‘repetir’. Dentro del bucle debemos incrementar el valor de la variable ‘i’ que hemos utilizado para mantener la cuenta.

  • Creamos una nueva variable que inicializamos a 1 y repetimos hasta que la variable ‘i’ sea mayor que ‘repetir’. Dentro del bucle debemos incrementar el valor de la variable ‘i’ que hemos utilizado para mantener la cuenta.

Cualquiera de las opciones es legítima y en ocasiones, optar por una u otra, depende del estilo de programación. Para incrementar o decrementar el valor de una variable, debemos asignar el nuevo valor al valor que la variable ya tiene y sumar/restar 1 (la operación de suma/resta está disponible en la categoría ‘Matemáticas’).

Optamos por la primera opción. Ahora eliminamos la frase que hemos mostrado para indicar el número de repeticiones y lo reemplazamos por un pardadeo del LED (integrado en Arduino). Por cada iteración, activamos el LED a estado ‘encendido’ esperamos un tiempo y ponemos el LED a estado ‘apagado’, esperando otra vez el mismo tiempo. Para activar y desactivar el LED, se dispone de la instrucción ‘LED en placa’ en la categoría ‘E/S básica’ y para realizar la espera disponemos de la instrucción ‘Esperar [ms]’ en la categoría ‘Control’:

Para finalizar con este ejemplo, simplemente vamos a duplicar la instrucción con el mensaje que se mostraba al inicio justo tras finalizar el bucle, ya que en ese momento estará de nuevo esperando a que el usuario introduzca un nuevo número:

Aquí podéis encontrar el código Facilino de este ejemplo: