FUNCION FOR


FUNCIÓN FOR

esta función a diferencia del IF no compara cantidades  si no que se usa para "jugar con variables"...

estructura:

la estructura a pesar que no es parecida al IF no se comporta igual:


            for(variable= 0; variable<=10; variable++){
            accion que se repetira mientras se ejecuta el FOR
           delay(X); //se usa para definir el tiempo que se tomara el FOR para incrementar la variable
           }

esta es la única estructura del for.

funcionamiento:

lo que se hace en los paréntesis es:

  • definir los parámetros de la variable(su máximo valor y su mínimo valor ), estos parámetros deben ser los adecuados dependiendo la variable
  • definir si se va a sumar o se va a restar**

lo que se hace es simple solo es cuestión de recordar matemáticas:

la función FOR comienza con la  variable en su valor mas bajo(que fue definido en el paréntesis) y como no es igual al valor máximo, se suma 1 a la variable y seguirá sumando  unidades hasta alcanzar el valor maximo.

en ese ejemplo la variable tiene un valor mínimo de 0, así que le suma 1 y después lo compara para ver si no es igual a 10 y como no lo es se le vuelve a sumar  1 y asi hasta que  se alcanza el valor máximo de 10:

como se puede apreciar esto es lo que hace la función FOR: inicia con el valor mínimo  en este caso 0  y suma de 1 en 1 hasta llegar al 10 y estos parámetros pueden variar dependiendo de la variable.

ahora como podemos apreciar:

            for(variable= 0; variable<=10; variable++){
            accion que se repetira mientras se ejecuta el FOR
           delay(X); //se usa para definir el tiempo que se tomara el FOR para incrementar la variable
           }

también podemos aprovechar el aumento de la variable para hacer acciones como por ejemplo:


  • definir la intensidad en un led
  • jugar con el angulo de un servomotor 
  • jugar con una serie de leds
  • alternar el encendido y apagado de multiples leds
  • ETC.
esto sirve mucho para ahorrar espacio en el programa cuando trabajamos con múltiples tareas, así como los pines. ahora pasaremos al  ejemploA:

*esquema
podríamos usar el pin13 pero no se notaria mucho lo que se va a hacer 

*codigo

int luz = 0;//variable para el FOR
const int LED = 4;//nombramos al pin 4 como LED
 void Setup(){
no es necesario colocar nada
}
void loop(){

for(luz = 0; luz < 255; luz++){
analogWrite(LED, luz);
delay(10);
}
delay(1000);
}

en este ejemplo podemos ver como se  aumenta la intensidad del led, pero si quieres ver como aumenta los valores puedes usar el puerto Serial haciendo esto


int luz = 0;//se crea la variable luz
const int led = 4;//se nombra led al pin 4

void setup() {
 //Serial.begin(9600);//inicializamos puerto Serial
}

void loop() {
  // inicia el bucle infinito
  for(luz = 0; luz < 255; luz++){
    analogWrite(led, luz);
    //Serial.println(luz);//imprime la variable luz
    delay(10);//**el delay cambia el ritmo en que aumenta el valor de la variable
  }
  delay(1000);//este delay es opcional
}

cada vez que aumenta el valor de luz se imprime ese valor en el puerto Serial.

EJEMPLO B:
esquema*
el potencio-metro  lo usaremos después

lo que haremos es una secuencia básica de leds  usando la función FOR

codigo*

int led = 0;

void setup(){
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
}
void loop(){

 for(led = 2;led<=11;led++){
  digitalWrite(led, HIGH);
  delay(500);//esto define el tiempo para que los led se enciendan
 }
 delay(1000);//opcional
}

bueno, ya logramos que se prendan, pero podemos apagarlos también

int led = 0;

void setup(){
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
}
void loop(){

  for(led = 11; led>= 2; led--){
  digitalWrite(led, LOW);
  delay(500);//tiempo para el apagado de los leds
 }

 delay(1000);//opcional
}

bueno ya esta pero como pudieron darse cuenta es muy desesperante escribir para cada pin "pinMode" y esto aumenta el margen de error en términos de gramática, asi que ¿por que no usar el FOR en esto?

codigo*

int led = 0;

void setup() {
  // put your setup code here, to run once:
 for(led = 2;led<=11;led++){
  pinMode(led,OUTPUT);
 }
}

void loop() {
  // put your main code here, to run repeatedly:
 for(led = 2;led<=11;led++){
  digitalWrite(led, HIGH);
  delay(500);
 }
 es mucho mas facil que escribir 10 veces pinMode, verdad?
ahora para terminar combinamos el encendido y apagado de los LEDS de la siguiente forma

int led = 0;

void setup() {
  // put your setup code here, to run once:
 for(led = 2;led<=11;led++){
  pinMode(led,OUTPUT);
 }
}

void loop() {
  // put your main code here, to run repeatedly:
 for(led = 2;led<=11;led++){
  digitalWrite(led, HIGH);
  delay(500);
 }
 for(led = 11; led>= 2; led--){
  digitalWrite(led, LOW);
  delay(500);
 }
 delay(1000);
}

**en la pestaña de descargas puedes obtener los links para los ejemplos mencionados aqui.

Comentarios