domingo, 16 de septiembre de 2018

Las funciones básicas; void setup y void loop

Las funciones básicas
En la publicación anterior hemos visto que el sketch se diferencia en varias zonas, de hecho tiene dos que son de obligado cumplimiento; la funcion void setup() y la funcion void loop.
En la publicación anterior hemos visto que las variables se declaran al principio de todo, esto no es obligatorio ya que las variables pueden ser declaradas tanto dentro de void setup() como dentro del void loop() aunque esto si que va tener repercusiones desde el punto de vista del "Ambito". El ámbito ó alcance de una variable determina en que parte del programa ésta podrá ser empleada, así si declaramos una variable antes del void setup() ésta sera visible desde todo el programa, mientras que si declaramos una variable en el void setup() ésta solo sera visible dentro de esta función y no podremos hacer uso de ella en el void loop.
Por otro lado cuando conectamos nuestra Arduino a la corriente (que ésta la puede tomar tanto por cable serial/USB como por la conexión de fuente externa) el programa se ejecuta de manera lineal desde la primera linea hasta la última.
Al llegar al void loop() la ejecución cambiará su comportamiento y leerá ciclicamente todo el código existente en el void loop() de manera indeterminada a no ser que el propio código se lo impida.
Para poder manejar a nuestra antojo el flujo del programa el lenguaje de Arduino posee varias herramientas (de uso universal) como son los bucles y las condicionales.
Otro modo habitual de desviar el flujo, es a través de llamadas a funciones, cuando se llama a una de estas funciones el flujo se deriva a ésta, ejecuta todo su código y continua ejecutándose donde lo había dejado.
Aquí os dejo una imagen que ilustra el flujo del programa anterior.




Y su código correspondiente:


  // -------------------DECLARACION DE VARIABLES
byte b; 
int i;
long l;
float f;
double d;
boolean bol;
char ch;
String st;
int ctrl;
// -------------------INICIALIACION DE VARIABLES
void setup() { 
  Serial.begin(9600);
  b= 255;
  i= 65767;
  l= 2345678;
  f= 1.23;
  d= 1.2345;
  bol= true;
  ch= 'c';
  st= "cadena";
}
// -----------------------------------------------------------------PROGRAMA PRINCIPAL
void loop() { 
  controldeflujo(); // LLAMAMOS A LA FUNCION controldeflujo()
  Serial.println(b); // IMPRIME POR CONSOLA EL VALOR DE b SEGUIDO DE UN SALTO DE LINEA
  Serial.println(i); // IMPRIME POR CONSOLA EL VALOR DE i SEGUIDO DE UN SALTO DE LINEA
  Serial.println(l); // IMPRIME POR CONSOLA EL VALOR DE l SEGUIDO DE UN SALTO DE LINEA
  Serial.println(f); // IMPRIME POR CONSOLA EL VALOR DE f SEGUIDO DE UN SALTO DE LINEA
  Serial.println(d); // IMPRIME POR CONSOLA EL VALOR DE d SEGUIDO DE UN SALTO DE LINEA
  Serial.println(bol); // IMPRIME POR CONSOLA EL VALOR DE bol SEGUIDO DE UN SALTO DE LINEA
  Serial.println(ch); // IMPRIME POR CONSOLA EL VALOR DE ch SEGUIDO DE UN SALTO DE LINEA
  Serial.println(st); // IMPRIME POR CONSOLA EL VALOR DE st SEGUIDO DE UN SALTO DE LINEA
  Serial.println(); // IMPRIME POR CONSOLA UN SALTO DE LINEA
  ctrl++; // Esto es lo mismo que ctrl=ctrl+1; // SUMA UN VALOR A ctrl
}

//------------------------------------------------------------ FUNCIONES DEL PROGRAMA PRINCIAL
void controldeflujo(){
  Serial.println(ctrl); // IMPRIME POR CONSOLA EL VALOR DE ctrl. 
}

No hay comentarios:

Publicar un comentario

Gracias por tu comentario, en breve lo revisaremos.