// C++ code
// NOMBRE:Cintia Rojas Flores
// FECHA: 17/04/2024
/* DESCRIPCION: Inicialmente se tiene una secuencia de 
	encendido de las luces LED de izquierda a derecha y
    viceversa aplicando efecto rebote en los extremos (luces
    LED verde y rojo). Luego, si se mantiene presionado el 
    boton de un pulsador la secuencia se revierte 
    hasta llegar a los extremos, que por el efecto rebote,
    realizaran la accion del pulsador presionado. 
*/

#define botonPin 7
#define ledVerde 12
#define ledNaranja 11
#define ledAzul 4
#define ledRojo 2

int direccion;

void setup() {
  
  pinMode (botonPin, INPUT);
  pinMode (ledVerde, OUTPUT);
  pinMode (ledNaranja,OUTPUT);
  pinMode (ledAzul,OUTPUT);
  pinMode (ledRojo,OUTPUT);
    
}

void loop(){
    digitalWrite(ledVerde,HIGH);
    digitalWrite(ledNaranja,LOW);
    digitalWrite(ledAzul,LOW);
    digitalWrite(ledRojo,LOW);
    delay(1000);
  
    digitalWrite(ledVerde,LOW);
    digitalWrite(ledNaranja,HIGH);
    digitalWrite(ledAzul,LOW);
    digitalWrite(ledRojo,LOW);
    delay(1000);  
    
    if (digitalRead(botonPin)==LOW){
      digitalWrite(ledVerde,HIGH);
      digitalWrite(ledNaranja,LOW);
      digitalWrite(ledAzul,LOW);
      digitalWrite(ledRojo,LOW);
      delay(1000); 
    }
    else{
      digitalWrite(ledVerde,LOW);
      digitalWrite(ledNaranja,LOW);
      digitalWrite(ledAzul,HIGH);
      digitalWrite(ledRojo,LOW);
      delay(1000); 
      
      if (digitalRead(botonPin)==LOW){
        digitalWrite(ledVerde,LOW);
        digitalWrite(ledNaranja,HIGH);
        digitalWrite(ledAzul,LOW);
        digitalWrite(ledRojo,LOW);
        delay(1000);
      }
      else{
        digitalWrite(ledVerde,LOW);
      	digitalWrite(ledNaranja,LOW);
      	digitalWrite(ledAzul,LOW);
      	digitalWrite(ledRojo,HIGH);
      	delay(1000);
        if (digitalRead(botonPin)==LOW){
          digitalWrite(ledVerde,LOW);
          digitalWrite(ledNaranja,LOW);
          digitalWrite(ledAzul,HIGH);
          digitalWrite(ledRojo,LOW);
          delay(1000);
          digitalWrite(ledVerde,LOW);
          digitalWrite(ledNaranja,HIGH);
          digitalWrite(ledAzul,LOW);
          digitalWrite(ledRojo,LOW);
          delay(1000);
        }
        else{
          digitalWrite(ledVerde,LOW);
          digitalWrite(ledNaranja,LOW);
          digitalWrite(ledAzul,HIGH);
          digitalWrite(ledRojo,LOW);
          delay(1000);
          if (digitalRead(botonPin)==LOW){
            digitalWrite(ledVerde,LOW);
            digitalWrite(ledNaranja,LOW);
            digitalWrite(ledAzul,LOW);
            digitalWrite(ledRojo,HIGH);
            delay(1000);
          }
          else{
            digitalWrite(ledVerde,LOW);
            digitalWrite(ledNaranja,HIGH);
            digitalWrite(ledAzul,LOW);
            digitalWrite(ledRojo,LOW);
            delay(1000);
            if (digitalRead(botonPin)==LOW){
              digitalWrite(ledVerde,LOW);
              digitalWrite(ledNaranja,LOW);
              digitalWrite(ledAzul,HIGH);
              digitalWrite(ledRojo,LOW);
              delay(1000);
              digitalWrite(ledVerde,LOW);
              digitalWrite(ledNaranja,LOW);
              digitalWrite(ledAzul,LOW);
              digitalWrite(ledRojo,HIGH);
              delay(1000);
            }
            else{
              digitalWrite(ledVerde,HIGH);
              digitalWrite(ledNaranja,LOW);
              digitalWrite(ledAzul,LOW);
              digitalWrite(ledRojo,LOW);
              delay(1000);
            }
          }
        }       
      }
  	}
}