Arduino, funciones personalizadas.

En este tutorial se explica que son las funciones personalizadas y como crearlas en Arduino. Una función es un conjunto de código el cual únicamente se activa cuando se manda llamar. Ya sea leer datos, realizar operaciones, etc.

Existen dos funciones principales predeterminadas para Arduino.

Una es la función setup(), la cual se manda llamar al inicio del programa.

Y la otra es la función loop(), la cual se repite una y otra ves durante el programa.

Pero podemos crear nuestras propias funciones (funciones de usuario), las cuales se ejecutarán solamente cuando las mandemos llamar.

Una función es muy útil para ejecutar tareas similares pero con diferentes parámetros. Además que simplifican el código y lo hacen más entendible.

Ejemplo de una función que hace una suma.

Un ejemplo muy simple para entender las funciones en Arduino es el siguiente.

Para realizar una suma, llamamos a la función suma.

int res;

void setup()
{
   res = suma(2,4);
}

void loop() {}

int suma(int a,int b)
{
   int sum;
   sum=a+b;
   return sum;
}

En el código creamos una función llamada suma(). La cual tiene como entrada dos parámetros (a y b). Realiza la suma de ambos parámetros guardándola en la variable sum. Y por último regresa la variable sum como resultado.

Si en el código queremos sumar dos números, simplemente llamamos a la función suma(numero1, numero2);.

En cualquier parte del código.

Sintaxis de la función en Arduino.

Como ya lo habrás notado en el ejemplo anterior. Hay una sintaxis cuando escribes una función.

Y podemos encontrar 2 tipos de funciones:

  1. Las que regresan un valor con el comando return. Como la anterior. Estas se declaran con el tipo de elemento que regresan (“type”). El ejemplo anterior regresa una variable tipo int.
Int suma(a,b)    //Función tipo int, llamada suma, tiene como entrada 2 parámetros (a y b)
{ 
   int sum;
   sum = a+b;        //Contenido de la función
   return sum;        //Valor que regresa la función, es el resultado
}
  1. Y las funciones que no regresan valores, solamente ejecutan código. Estas se declaran con “void”.
void leerDatos()    //Función llamada leerDatos, no regresa valores, solo ejecuta código
{ 
                //Contenido de la función
}                       

Ejemplo de función que regresa resultados.

La función puede realizar cosas más complejas que una suma. Tal una función que resuelva la siguiente ecuación:

float fun1(int a,int b)
{
   float res;
   res=(a*a)+2*b;
   return res;
}

Ahora tenemos una función llamada fun1() tiene dos parámetros de entrada (a y b). Pero ahora no es una suma, sino una ecuación más compleja. Y regresa un tipo de variable flotante (float).

La ventaja es que cuando quieres usar esa ecuación, no tendremos que escribir la ecuación varias veces. Sino solamente llamar a la función fun1(), con los parámetros deseados y obtendremos el resultado.

Ejemplo función que no regresa resultados.

Podemos hacer una función que tenga un objetivo particular.

Por ejemplo, hacer que un LED parpadee 3 veces, para indicarle al usuario que un sensor está en la posición correcta.

La función es la siguiente:

void parpadear()
{
  for(int i=0;i<3;i++)
  {
     digitalWrite(8,HIGH);
     delay(400);
     digitalWrite(8,LOW);
     delay(400);
  }
}

La función se llama, parpadear. Y la podemos llamar desde cualquier parte de nuestro código de la siguiente manera:

parpadear();

Agregando parámetros a la función en Arduino.

Pero podemos hacerla más completa, agregando una variable para indicar el número de pulsos que tendrá el LED.

void parpadear(int n)
{
  for(int i=0;i<n;i++)
  {
     digitalWrite(8,HIGH);
     delay(400);
     digitalWrite(8,LOW);
     delay(400);
  }
}

Ahora la función se llama parpadear() y tiene un parámetro (n) el cual es el número de pulsos que tendrá el LED. Ya que la variable n indica el número de ciclos que tendrá el ciclo for(….).

Ahora podemos llamar a la función parpadear(), e indicarle cuantas veces debe parpadear. Así podemos dar diferentes indicaciones al usuario de acuerdo al número de parpadeos del LED.

Y en un dado caso podemos agregar el tiempo del delay() o bien el pin que se quiere mandar la señal de parpadeo.

La función la podemos llamar desde cualquier parte del código de la siguiente manera.

parpadear(3)                     //El LED parpadea 3 veces

parpadear(5)                     //El LED parpadea 5 veces

Las funciones tienen múltiples aplicaciones, pueden reducir el tamaño del código y te ayudan a organizar mejor el código.

Funciones del usuario Arduino