Funciones y modularización del código
1. Qué son las funciones? #
Una función es un bloque de código que realiza una tarea específica, que puede ejecutarse cada vez que sea invocada. Permiten organizar y reutilizar código, haciendo el programa más sencillo y eficiente.
Estructura básica de una función: #
1tipoDato nombreFuncion(tipoDato parametro1, tipoDato parametro2, ...) { 2 // instrucciones 3 return valor; // opcional 4}
Ejemplo de función simple: #
1// función que suma dos números y devuelve el resultado 2int suma(int a, int b) { 3 int resultado = a + b; 4 return resultado; 5}
Para usarla dentro del código principal:
1void setup() { 2 Serial.begin(9600); 3 int total = suma(5, 3); // llama a la función suma 4 Serial.print("La suma es: "); 5 Serial.println(total); // imprime 8 6} 7 8void loop() { 9 // código repetitivo 10}
2. Funciones sin retorno (void) #
Las funciones pueden no devolver ningún valor. Esto se indica con void.
1// función que enciende un LED en un pin dado 2void encenderLED(int pin) { 3 digitalWrite(pin, HIGH); 4}
Llamado:
1void setup() { 2 pinMode(13, OUTPUT); 3 encenderLED(13); 4}
3. Parámetros y retorno de valores #
Parámetros: #
Permiten enviar datos o valores hacia una función para que los procese.
1// función con parámetros para encender o apagar un LED 2void controlLED(int pin, boolean estado) { 3 digitalWrite(pin, estado); 4}
Llamado:
1controlLED(13, HIGH); // enciende LED 2controlLED(13, LOW); // apaga LED
Retorno de valores: #
Permite devolver el resultado de la función al punto desde donde fue llamada.
1float convertirTemperatura(float celsius) { 2 float fahrenheit = (celsius * 9 / 5) + 32; 3 return fahrenheit; 4}
Llamado:
1float tempF = convertirTemperatura(25.0); 2Serial.println(tempF); // imprime 77.00
4. Modularización del código #
Consiste en organizar el código en diferentes archivos o módulos para mejorar la claridad y facilitar el mantenimiento.
Un módulo suele dividirse en dos archivos:
- Cabecera (
.h): Declaraciones de funciones, variables globales y constantes. - Implementación (
.c): Contiene el código de las funciones.
Ejemplo práctico: #
Archivo: ledControl.h
1#ifndef LEDCONTROL_H 2#define LEDCONTROL_H 3 4void encenderLED(int pin); 5void apagarLED(int pin); 6 7#endif
Archivo: ledControl.c
1#include <Arduino.h> 2#include "ledControl.h" 3 4void encenderLED(int pin) { 5 digitalWrite(pin, HIGH); 6} 7 8void apagarLED(int pin) { 9 digitalWrite(pin, LOW); 10}
Para utilizar estos módulos en tu archivo principal (.ino):
1#include "ledControl.h" 2 3void setup() { 4 pinMode(13, OUTPUT); 5} 6 7void loop() { 8 encenderLED(13); 9 delay(1000); 10 apagarLED(13); 11 delay(1000); 12}
Resumen del tema
Conceptos clave #
- Modularidad: división del código en bloques reutilizables e independientes con responsabilidades bien delimitadas.
- Estructura de Funciones: especificación del tipo de retorno (o
voidsi no retorna valor), nombre representativo y lista de parámetros tipados. - Paso de Parámetros y Retorno: envío de valores a funciones para procesamiento y uso de la instrucción
returnpara devolver el resultado. - Organización en Archivos (
.hy.cpp/.c): separación entre cabeceras (.h) con directivas de inclusión (#ifndef,#define) y la implementación lógica (.cpp) para proyectos escalables.
Qué debes recordar #
Organizar el código en funciones y módulos mejora la legibilidad, facilita la depuración y permite reutilizar rutinas sin duplicar código en el programa.