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:

Led-Esquematico
Esquemático de LED

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

About: Pablo


    Leave a Reply

    Your email address will not be published. Required fields are marked *

    Share via
    Copy link