En esta lección aprenderás a crear funciones y a utilizarlas en el desarrollo de tus programas para tus proyectos de Arduino
En este manual ya hemos utilizado varias funciones que Arduino trae predefinidas y que podemos usar en nuestros programas, se reconocen por esa apertura y cierre de paréntesis. Estas funciones se pueden agrupar en diferentes tipos y algunas de las que ya hemos utilizado son las siguientes:
Tipos de funciones | Ejemplos de funciones |
---|---|
Funciones de entrada/salida analógicas. | analogRead( pin ) analogWrite( pin ) |
Funciones avanzadas de entrada/salida. | tone( pin, frecuencia) noTone(pin ) |
Funciones temporales. | delay( milisegundos ) |
Funciones matemáticas. | map(valor, valor mínimo, valor máximo, rango mínimo, rango máximo) |
Independientemente de las funciones de Arduino, tu puedes crear tus propias funciones.
Funciones definidas por usuario
Para solucionar un problema complejo, la mejor técnica es dividirlo en problemas más pequeños y sencillos para que sean más fáciles de resolver. En programación esta técnica permite diseñar la solución del problema principal mediante un programa principal y la solución de los subproblemas mediante subprogramas conocidos como funciones. Las funciones de usuario pueden ser escritas para realizar tareas repetitivas y para reducir el tamaño de un programa.
Es un segmento de código que está separado del código principal del programa, que realiza una tarea específica y regresa a la zona del programa donde fue llamada.
Al utilizar funciones podemos hacer más compacto nuestro código organizándolo por bloques. Para llamar a las funciones basta con solo utilizar su nombre para correr su código interno, esto nos permite que nuestro código sea más ligero y más fácil de entender.
Declaración de una función
Sintaxis
tipoDato nombreFunción (Parámetros)
{
variables locales ;
Código;
return (retorno);
}
Parámetros
tipoDato: tipo de dato que regresa la función (int, double o void si no regresa ningún valor).
nombreFunción: el nombre alusivo a lo que hace la función.
Parámetros – es una variable que se utiliza para realizar algún cálculo o tarea. Se dejan vacíos si no requiere ningún parámetro.
Variables locales – la declaración de la variable que solamente podrá ser usada por esa función en particular.
Código – el código que escribiremos debe estar entre las llaves y cada línea se cierra con punto y coma.
retorno – “return” es el valor que regresa la función, debe ser del mismo tipo del parámetro que se escribió.
En la siguiente imagen (Figura 1) se muestra un ejemplo de cada parámetro en una función:

Vamos a ver el uso de una función definida por el usuario con el siguiente ejemplo:
Se desea programar un circuito electrónico que encienda un LED cuando un sensor LM35 registre la temperatura de 27 ºC y en caso contrario, permanezca apagado. El LED se conectará al pin 7 y el sensor de temperatura al pin A0 (Figura 2).

En este circuito, las instrucciones para que el sensor registre los valores de la temperatura formarán parte del código de la función definda por el usuario con el nombre leetemp, es una función que regresa un valor de tipo float, por lo que la cabecera de la función sería la siguiente:
float leetemp(void); // Prototipo de la función que lee la temperatura
Para utilizar la función leetemp, se invoca en el programa principal, que en nuestro código es la función loop() como se muestra en el siguiente código:
void loop() {
temperatura = leetemp();
}
El código de la función leetemp y su utilización en el programa para controlar el sensor de temperatura LM35 lo puedes revisar en el siguiente t video:
Como pudiste observar en el video, la construcción de funciones no es complicado y ayudan mucho a simplificar el código de tus programas.
Manos a la obra

Ahora que ya conoces como codificar funciones, vamos a realizar una práctica que consiste en la construcción y programación de un circuito electrónico que utilice un sensor de temperatura LM35 con una función que leerá el valor de la temperatura. Si la temperatura pasa de un valor umbral, encendemos un LED
Materiales
Los materiales que se requieren para la realización de la práctica son los siguientes:









Para que comprendas mejor las conexiones y el funcionamiento del circuito electrónico que vas a crear, primero explicaremos cómo trabaja un sensor LM35. Los otros materiales ya los hemos utilizado en prácticas anteriores de este manual, si no te acuerdas o deseas repasar las características técnicas y funcionamiento de alguno de los componentes electrónicos, puedes dar clic sobre su imagen para consultar su información.
Sensor LM35
El LM35 es un circuito electrónico sensor que puede medir temperatura. Su salida es analógica, es decir, te proporciona un voltaje proporcional a la temperatura. El sensor tiene un rango desde −55°C a 150°C. En el siguiente video te explicamos cómo funciona este sensor.
Construcción del circuito electrónico
Realiza las conexiones del circuito electrónico que se muestra en el diagrama esquemático de la Figura 1. Observa que la terminal izquierda del sensor va a corriente, la terminal de enmedio al puerto A0 y la terminal derecha a tierra

Programación del circuito electrónico
Captura el código del programa en el IDE de Arduino. Recuerda escribir el código para aprender las instrucciones.
/* Manual de programación con Arduino
* Práctica: Sensor de temperatura LM35
* Objetivo: Uso de una función que leerá el valor de la temperatura
* y si la temperatura pasa de un valor umbral, enciende un LED
* Fecha: agosto 2020
* Autor: Miguel Ángel Bañuelos
*/
const int pinSensor = A0; // Se pasará como parámetro a la función
const int pinLed = 7; // Conexión del LED
const int umbral = 26; // umbral de la temperatura en grados celcius
int valorSensor = 0; // La definición se hace dentro de la función
float temperatura = 0; // Variable para guardar la temperatura
void setup() {
pinMode(pinLed, OUTPUT); // Declaramos el pin del Led de salida
}
float leetemp(void); // Prototipo de la función que lee la temperatura
void loop() {
temperatura = leetemp();
// comparamos el valor de la temperatura con el umbral
if (temperatura > umbral){
digitalWrite(pinLed, HIGH); // Mayor al umbral LED ON
}
else {
digitalWrite(pinLed, LOW); // Menor al umbral LED OFF
}
delay(1000);
}
float leetemp(void) {
int valorSensor=0; // Esta es una variable local valor
valorSensor = analogRead(pinSensor); // Leemos el valor del sensor
// pinSensor es una constante global
float milivolts = (valorSensor / 1024.0) * 5000; // Lo convertimos a milivolts
return milivolts/10; // Este es el resultado de la función
}
Funcionamiento del circuito electrónico
Prueba el funcionamiento de tu circuito electrónico. Verifica que el circuito funcione como la simulación que se muestra a continuación. Presiona el botón Iniciar simulación, presiona el sensor y observa cómo enciende el led cuando se alcanza el umbral .
Si en tu navegador no se muestra la simulación, ingresa al enlace https://www.tinkercad.com/embed/6qghkAbBbHV?editbtn=1

Autoevaluación

Para aprender más
Proserquisa (2016)¿Qué es una función y cómo utilizarla? http://cursoarduino.proserquisa.com/2016/10/05/tutorial-6-que-es-una-funcion-y-como-utilizarla/