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.
*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
Publicar un comentario