Función con Arduino (Prende y apaga LEDs)
Vamos a realizar un ejercicio para ejemplificar el uso de funciones con Arduino.
Las funciones son fragmentos de código con tareas o un objetivo en particular que se puede ejecutar en cualquier parte de nuestro script o desde otra función, también nos ayudan a ahorrar lineas de código y a mantener organizado y entendible nuestro script.
La función tiene un nombre y puede o no recibir valores variables para ser manipulados dentro de la misma función, en su interior tiene las instrucciones para manipular los valores recibidos o simplemente ejecutar una tarea particular y devolver el resultado.
En pocas palabras la función recibe o no información, realiza tareas con la información y devuelve un resultado.
En lenguaje Arduino, para declarar una variable utilizamos el tipo de dato que va a devolver es decir si queremos trabajar con enteros, iniciamos con la palabra reservada “int”
TipoDato NombreFuncion(Parametro1, ....ParametroN) { Instrucciones; }
Y para mandar llamar la función simplemente ponemos el nombre de la función y los parámetros que le vamos a enviar:
NombreFuncion(Parametro1, ....ParametroN);
Hay funciones que retornan un valor, para eso es necesario escribir al final de la función la palabra reservada return para devolver el resultado de la operación:
TipoDato NombreFuncion(Parametro1, ....ParametroN) { instrucciones; return <valores>; }
Es importante mencionar que si una función devuelve valores y NO utilizamos la palabra return la función va a compilar, no devolverá error, pero la función va a devolver cero.
————————————————————————————————————
Ahora vamos a ver un ejemplo muy simple, vamos a hacer un juego de luces con 3 LEDS y 5 funciones. Vamos a utilizar el siguiente material:
- 3 LED (en mi caso Verde, Amarillo y Rojo)
- 3 Resistencias de 220 ohm
- Cables
- Arduino
Ahora, nuestro código consta de 5 funciones y cada una realiza las siguientes tareas:
- Encender el LED verde
- Encender el LED amarillo
- Encender el LED rojo
- Apagar todos los LED
- Juego de luces
Nuestro esquemático queda de la siguiente manera:
Primero declaramos variables para facilitar manipular los PINES
// Variables donde se conecta cada LED int verde = 4; // LED Verde conectado a PIN digital 4 int amarillo = 3; // LED Amarillo conectado a PIN digital 3 int rojo = 2; // LED rojo conectado a PIN digital 2
Después en el setup debemos indicar que los puertos son de salida
void setup() { pinMode(verde, OUTPUT); // Decclaramos los tres PIN pinMode(rojo, OUTPUT); // como salida pinMode(amarillo, OUTPUT); }
Las funciones quedan así:
//----------------------------------------- void prendeverde() { digitalWrite(verde, HIGH); // Encender el LED verde } //----------------------------------------- void prendeamarillo() { digitalWrite(amarillo, HIGH); // Encender el LED amarillo } //----------------------------------------- void prenderojo() { digitalWrite(rojo, HIGH); // Encender el LED rojo } //----------------------------------------- void apagatodo() { // Esta función apaga todos los leds digitalWrite(verde, LOW); digitalWrite(amarillo, LOW); digitalWrite(rojo, LOW); } //----------------------------------------- void luces() { // Esta función llama a todas las funcinoes prendeverde(); // Se enciende el verde delay(100); // Esperamos 100 milisegundos apagatodo(); // Se apaga todo delay(100); // Esperamos 100 milisegundos prendeamarillo(); // Se enciende el amarillo delay(100); // Esperamos 100 milisegundos apagatodo(); // Se apaga todo delay(100); // Esperamos 100 milisegundos prenderojo(); // Se enciende el rojo delay(100); // Esperamos 100 milisegundos apagatodo(); // Se apaga todo delay(100); // Esperamos 100 milisegundos }
Vemos como la función luces(); manda llamar todas las funciones anteriores.
Para finalizar, la sección loop solamente va a llamar la función luces();
void loop() { luces(); // Aquí llamamos la función 'luces' }
Y si todo va bien tendremos un juego de luces.
Puedes probar modificando la función luces(); agregando tiempo o eliminando lineas de la función apagatodo(); y de esa manera el resultado será diferente.
También puedes agregar LEDs y crear nuevas funciones de encendido para cada LED nuevo, y agregando el llamado de esas funciones a la función luces(); podrás encender y apagar las luces.
En un próximo ejercicio utilizaremos estas funciones para agregar mensajes de “Éxito”, “Procesando” y “Error” en forma de luz.
El codigo fuente se encuentra en el siguiente link