Reference Language (extended) | Libraries | Comparison | Changes
Segmentar el código en funciones permite al programador crear piezas modulares de código que realizan una tarea definida y vuelven a la zona del programa en la que fueron llamadas. El caso típico para crear un función es cuando uno necesita realizar la misma acción múltiples veces dentro de un mismo programa.
Para programadores acostumbrados a utilizar BASIC las funciones en Arduino permiten (y extienden) la utilidad de usar subrutinas (GOSUB en BASIC).
La estandarización de fragmentos de código en funciones tiene diversas ventajas:
Hay dos funciones necesarias en un sketch de Arduino: setup() y loop(). El resto de funciones debe ser definido fuera de las llaves de estas dos funciones. Como ejemplo vamos a crear una función muy simple que multiplica dos números.

Al "invocar" a nuestra pequeña función le pasamos parametros del tipo de dato que ella espera.
void loop{
int i = 2;
int j = 3;
int k;
k = myMultiplyFunction(i, j); // k ahora contiene 6
}
Nuestra función necesita ser declarada fuera de cualquier otra función, por ello "myMultiplyFunction()" puede ir antes o despues de la función "loop()".
El sketch completo podría ser algo como esto:
void setup(){
Serial.begin(9600);
}
void loop{
int i = 2;
int j = 3;
int k;
k = myMultiplyFunction(i, j); // k ahora contiene 6
Serial.println(k);
delay(500);
}
int myMultiplyFunction(int x, int y){
int result;
result = x * y;
return result;
}
Esta función leerá un sensor cinco veces con analogRead() y calculará la media de las cinco lecturas. Escala los datos a 8 bits (0-255), los invierte y devuelve el resultado invertido.
int ReadSens_and_Condition(){
int i;
int sval;
for (i = 0; i < 5; i++){
sval = sval + analogRead(0); // sensor en pin analógico 0
}
sval = sval / 5; // media
sval = sval / 4; // escala a 8 bits (0 - 255)
sval = 255 - sval; // invierte el resultado
return sval; // devuelve el resultado
}
Para llamar a nuestra función solo tenemos que asignarla a una variable.
int sens; sens = ReadSens_and_Condition();
Correcciones, sugerencias, y nueva documentación deberán ser publicadas en el Foro (castellano) o en el Foro (inglés).
El texto de la referencia de Arduino está publicado bajo la licencia Creative Commons Reconocimiento-Compartir bajo la misma licencia 3.0. Los ejemplos de código de la referencia están liberados al dominio público.