int entradas[] = {16,17,18,19};
int salidas[] = {13,5,23,21};

void setup() {
  int x=0;
  for(x=0; x<4; x++){
    pinMode(entradas[x], INPUT);
    pinMode(salidas[x], OUTPUT);
  }
}

void loop() {
  //dueño del caso 1
  int boton1= digitalRead(entradas[0]);
  funcion1(boton1);
  //dueño del caso 2
  int boton2= digitalRead(entradas[1]);
  funcion2(boton2);
  //dueño del caso 3
  int boton3= digitalRead(entradas[2]);
  funcion3(boton3);
  //dueño del caso 4
  int boton4= digitalRead(entradas[3]);
  funcion4(boton4);
}
//prender apagar caso1
void funcion1(int push1){

  if(push1== HIGH){
    prende1();
  }
  else{
    apaga1();
  }
}
//prende los focos con el if del void de la funcuncion del caso1
void prende1(){
digitalWrite(salidas[0],HIGH);
digitalWrite(salidas[1],HIGH);
digitalWrite(salidas[2],HIGH);
digitalWrite(salidas[3],HIGH);
delay(1000);
digitalWrite(salidas[0],LOW);
digitalWrite(salidas[1],LOW);
digitalWrite(salidas[2],LOW);
digitalWrite(salidas[3],LOW);
 delay(1000);
}

//apaga los focos con el if del void de la funcuncion del caso1
void apaga1(){
  int q;
  for(q=0; q<=3; q++){
    digitalWrite(salidas[q], LOW);
  }
}

//////[][][][][][][][][][[][][[[][][][][][[][][][][][][[]]]]]]
//prender apagar caso2
void funcion2(int push2){

  if(push2== HIGH){
    prende2();
  }
  else{
    apaga2();
  }
}
//prende los focos con el if del void de la funcuncion del caso2
void prende2(){
digitalWrite(salidas[0],HIGH);
digitalWrite(salidas[1],LOW);
digitalWrite(salidas[2],LOW);
digitalWrite(salidas[3],LOW);
delay(500);
digitalWrite(salidas[0],LOW);
digitalWrite(salidas[1],HIGH);
digitalWrite(salidas[2],LOW);
digitalWrite(salidas[3],LOW);
delay(500);
digitalWrite(salidas[0],LOW);
digitalWrite(salidas[1],LOW);
digitalWrite(salidas[2],HIGH);
digitalWrite(salidas[3],LOW);
delay(500);
digitalWrite(salidas[0],LOW);
digitalWrite(salidas[1],LOW);
digitalWrite(salidas[2],LOW);
digitalWrite(salidas[3],HIGH);
delay(500);
}
//apaga los focos con el if del void de la funcuncion del caso2
void apaga2(){
  int q;
  for(q=0; q<=3; q++){
    digitalWrite(salidas[q], LOW);
  }
}

//////[][][][][][][][][][[][][[[][][][][][[][][][][][][[]]]]]]
//prender apagar caso3
void funcion3(int push3){

  if(push3== HIGH){
    prende3();
  }
  else{
    apaga3();
  }
}
//prende los focos con el if del void de la funcuncion del caso3
void prende3(){
digitalWrite(salidas[0],LOW);
digitalWrite(salidas[1],LOW);
digitalWrite(salidas[2],LOW);
digitalWrite(salidas[3],HIGH);
delay(500);
digitalWrite(salidas[0],LOW);
digitalWrite(salidas[1],LOW);
digitalWrite(salidas[2],HIGH);
digitalWrite(salidas[3],LOW);
delay(500);
digitalWrite(salidas[0],LOW);
digitalWrite(salidas[1],HIGH);
digitalWrite(salidas[2],LOW);
digitalWrite(salidas[3],LOW);
delay(500);
digitalWrite(salidas[0],HIGH);
digitalWrite(salidas[1],LOW);
digitalWrite(salidas[2],LOW);
digitalWrite(salidas[3],LOW);
delay(500);
}
//apaga los focos con el if del void de la funcuncion del caso3
void apaga3(){
  int q;
  for(q=0; q<=3; q++){
    digitalWrite(salidas[q], LOW);
  }
}

//////[][][][][][][][][][[][][[[][][][][][[][][][][][][[]]]]]]
//prender apagar caso4
void funcion4(int push4){

  if(push4== HIGH){
    prende4();
  }
  else{
    apaga4();
  }
}
//prende los focos con el if del void de la funcuncion del caso4
void prende4(){
digitalWrite(salidas[0],HIGH);
digitalWrite(salidas[1],LOW);
digitalWrite(salidas[2],LOW);
digitalWrite(salidas[3],LOW);
delay(500);
digitalWrite(salidas[0],HIGH);
digitalWrite(salidas[1],HIGH);
digitalWrite(salidas[2],LOW);
digitalWrite(salidas[3],LOW);
delay(500);
digitalWrite(salidas[0],HIGH);
digitalWrite(salidas[1],HIGH);
digitalWrite(salidas[2],HIGH);
digitalWrite(salidas[3],LOW);
delay(500);
digitalWrite(salidas[0],HIGH);
digitalWrite(salidas[1],HIGH);
digitalWrite(salidas[2],HIGH);
digitalWrite(salidas[3],HIGH);
delay(500);
//////REGRESO

digitalWrite(salidas[0],HIGH);
digitalWrite(salidas[1],HIGH);
digitalWrite(salidas[2],HIGH);
digitalWrite(salidas[3],LOW);
delay(500);
digitalWrite(salidas[0],HIGH);
digitalWrite(salidas[1],HIGH);
digitalWrite(salidas[2],LOW);
digitalWrite(salidas[3],LOW);
delay(500);
digitalWrite(salidas[0],HIGH);
digitalWrite(salidas[1],LOW);
digitalWrite(salidas[2],LOW);
digitalWrite(salidas[3],LOW);
delay(500);
digitalWrite(salidas[0],LOW);
digitalWrite(salidas[1],LOW);
digitalWrite(salidas[2],LOW);
digitalWrite(salidas[3],LOW);
delay(500);
}
//apaga los focos con el if del void de la funcuncion del caso4
void apaga4(){
  int q;
  for(q=0; q<=3; q++){
    digitalWrite(salidas[q], LOW);
  }
}