¿Cómo creamos una función en Arduino?
Una función es un conjunto de instrucciones al que se les identifica con un nombre. Usando posteriormente ese nombre, podemos llamar a la función para que ejecute las instrucciones incluidas dentro de ella, simplemente escribiendo su nombre en el lugar deseado de nuestro sketch.
Para crear una función propia, primero debemos declararla. Esto se hace en cualquier lugar fuera de setup() y loop(), antes o después. Una función puede o no retornar valores, y también puede o no recibir parámetros, esto se hace siguiendo la sintaxis marcada por la plantilla siguiente:
tipodeRetorno nombredeFuncion (tipodeparam1, tipodeparam2,...) { // Código interno de la función } donde tipodeRetorno: Indica el tipo de valor que la función devolverá al sketch principal una vez ejecutada. nombredefuncion: Es el nombre que le damos a la función tipodeparam: son las declaraciones de los parámetros de la función, que no son más que variables internas cuya existencia solo perdura mientras el código de esta se esté ejecutando.
Ejemplo 1
void blinkLED() { //Se declara la función, esta no devuelve ningún valor ni recibe parámetros digitalWrite(13, HIGH); //Se enciende el led en el pin 13 delay(100); //Se espera 0,1 segundos digitalWrite(13, LOW); //Se apaga el led en el pin 13 delay(100); //Se espera 0,1 segundos } void setup(){ pinMode(13,OUTPUT); //Se configura el pin 13 como salida } void loop(){ blinkLED(); //Se llama a la función }
Ejemplo 2
int primerNumero=2; //Declaro e inicializo una variable global int segundoNumero=3; //Declaro e inicializo una variable global int recojoResultado; // Declaro e inicializo una variable global int multiplicar(int x, int y){ // Se declara la función, retorna un valor y recibe dos parámetros int resultado; // Se declara la variable resultado, esta es interna de la función resultado = x*y; //Es la operación que realiza la función return resultado; //retorna el valor de la variable resultado } void setup(){ Serial.begin(9600); //Inicializo el Puerto serial recojoResultado=multiplicar(primerNumero,segundoNumero); //Llamo la función y tomo su valor de retorno Serial.println(recojoResultado); //Imprimo el resultado en el puerto serial } void loop(){}
Ejercicios
Para realizar los ejercicios podemos usar el siguiente circuito:
Ejercicio 1: Modificar función
Modificar la función blinkLED del ejemplo 1, para que podamos indicarle el tiempo en alto y en bajo que deseemos, como parámetros de la función.
Ejercicio 2: Leer valor analógico
Crear una función que lea el valor del potenciómetro 5 veces y devuelva el promedio de las 5 lecturas.
Ejercicio 3: Leer valor analógico y encender LEDs
Modificar la función del ejercicio 2 para que adicionalmente encienda un led con el valor proporcional al valor leído del potenciómetro.
Ejercicio 4: Crear una función que lea del puerto Serial
Crear una función que lea tres valores enteros del puerto serial y los sume, esta función debe retornar el valor de la suma después de leídos los tres valores.
Y con los ejercicios hemos culminado la lección, espero te allá sido de provecho.
Y si aun no te has suscrito a nuestro boletín? Suscríbete y te mantendré informado de la ultimas publicaciones y entregas especiales. Y si tienes alguna pregunta o comentario acerca del post no dudes en hacerla.