Bucles aniñados

Descrición:

Podemos aniñar bucles dentro doutros bucles.

Programas:

1. (3a+1b)x5

1. (3a+1b)x5: Queremos que cando premamos un pulsador se repita 5 veces o seguinte: Un LED escintila 3 veces e de seguido outro LED escintila 1 vez.

// Declaración de variables:

const int led1=7;
const int led2=11;
const int pulsador=2;
int estado=0;

// Configuración:

void setup() {                
  pinMode(led1,OUTPUT);   
  pinMode(led2,OUTPUT);       
}

// Programa:

void loop() {

  estado=digitalRead(pulsador);
  if (estado == 1) {                 // Cando prememos no pulsador

    for (int a=0;a<5;a++) {         // Repítese 5 veces o que segue
       
      for(int b=0;b<3;b++) {        // Repítese 3 veces o que segue
        digitalWrite(led1,HIGH);  
        delay(100);             
        digitalWrite(led1,LOW);   
        delay(100);            
      }                      
      digitalWrite(led2,HIGH);    
      delay(200);               
      digitalWrite(led2,LOW);     
      delay(200);  
           
    }
  }
}

2.Máis rápido!

2. Máis rápido!: Imos acender e apagar un LED 5 veces. Cada vez o tempo entre o acendido e o apagado será menor. Para iso utilizamos a función for(inicio;condición;modificador) de maneira que empezamos con variable tempo1=500ms, e mentres se cumpra a condición de que dita variable valla máis que 50, executamos o proceso de acendido e apagado dun LED, e despois restámoslle 50ms, para ir facendo progresivamente o tempo máis curto.
for (tempo1=500; tempo1>50; tempo1-=50){ acender e apagar 5 veces un LED}

// Declaración de variables:

int led = 13;          
int tempo1 = 500;      
int tempo2 = 500;      

// Configuración

void setup() {                
  pinMode(led, OUTPUT);   
}

// Programa

void loop()  {                

  for (tempo1=500;tempo1>50;tempo1-=50){     // cada quenda, o intervalo entre escintileos será menor
    
    for (int n=0;n<5;n++){          // Repítese 5 veces (desde 0 ata 4) o seguinte:
      digitalWrite(led, HIGH);   
      delay(tempo1);            
      digitalWrite(led, LOW);    
      delay(tempo1);            
    }
    delay(tempo2);                  // agarda o tempo2 antes de repetir de novo o proceso  
    
  }

}

Propostas:

Utiliza a función for para resolver estes problemas:

  1. 7 LEDs 1: Fai que se acendan de maneira consecutiva 7 LEDs, pero de xeito que cada un latexe 3 veces. (Utiliza a práctica “LEDs consecutivos” como base)
  2. 7 LEDs 2: Fai que se acendan e apaguen de maneira consecutiva 7 LEDs, de xeito que o primeiro escintile unha vez, o seguinte 2, o terceiro 3, e así sucesivamente.

Deixa un comentario