Reference   Language (extended) | Libraries | Comparison | Changes

Funciones.

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:

  • Las funciones ayudan al programador a ser organizado. Además ayudan a conceptualizar el programa.

  • Las funciones codifican una acción en un lugar, así que sólo deben ser depuradas de errores una vez.

  • Reducen las posibilidades de error en modificaciones, si el código debe ser cambiado.

  • Las funciones hacen el sketch mas pequeño y mas compacto por que las secciones de código se reutilizan varias veces.

  • Hacen mas fácil la reutilización de código en otros programas por hacerlo mas modular y, como efecto paralelo, usando funciones se obtiene un código mas legible.

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.

Ejemplo

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;
}

Otro ejemplo:

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();

Página principal Referencia

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.

Share