const int  ElectrovalvulaPlantaSuperior=13;
const int  ElectrovalvulaPlantaInferior=12;
const int  Bomba=11; 
const int  TermostatoPlantaSuperior=10;
const int  TermostatoPlantaInferior=9;
const int  Caldera=8;
const int  PilotoValvulaSuperior=7;
const int  PilotoValvulaInferior=6;
int estado=1;// estados de las valvulas.
boolean TS;
boolean TI;
boolean B=0;
boolean PSup=0;
boolean PInf=0;

void setup() {

  pinMode(ElectrovalvulaPlantaSuperior,OUTPUT);
  pinMode(ElectrovalvulaPlantaInferior,OUTPUT);
  pinMode(PilotoValvulaSuperior,OUTPUT);
  pinMode(PilotoValvulaInferior,OUTPUT);
  pinMode(Bomba,INPUT);
  pinMode(TermostatoPlantaSuperior,INPUT);
  pinMode(TermostatoPlantaInferior,INPUT);
  pinMode(Caldera,OUTPUT); 
}

void loop(){
    
  TS=digitalRead(TermostatoPlantaSuperior);
  TI=digitalRead(TermostatoPlantaInferior);
  PSup=digitalRead(ElectrovalvulaPlantaSuperior);
  PInf=digitalRead(ElectrovalvulaPlantaInferior);
  B = digitalRead(Bomba);
  
  delay(100);
  
  if (((TS)||(TI))==HIGH) {digitalWrite(Caldera,LOW);}else {digitalWrite(Caldera,HIGH);}
  if((TS==0)&&(TI==1))estado=2;
  if((TS==1)&&(TI==0))estado=3;
  if((TS==1)&&(TI==1))estado=4;
  
  if (TI==0) {digitalWrite(PilotoValvulaInferior,HIGH);}
  if (TS==0) {digitalWrite(PilotoValvulaSuperior,HIGH);}
  
  if(estado==1)estado1();
  if(estado==2)estado2();
  if(estado==3)estado3();
  if(estado==4)estado4();
}

void estado1() {

  digitalWrite(ElectrovalvulaPlantaSuperior,HIGH);
  digitalWrite(ElectrovalvulaPlantaInferior,HIGH);
 
  if(B==1) estado=4; else estado=1;
}

void estado2() {

  digitalWrite(ElectrovalvulaPlantaSuperior,HIGH);
  digitalWrite(ElectrovalvulaPlantaInferior,LOW);
  
  if (TI==1) {digitalWrite(PilotoValvulaInferior,LOW);}
  if ((TI==0)&&(B==1)) {digitalWrite(PilotoValvulaInferior,HIGH);delay(500);digitalWrite(PilotoValvulaInferior,LOW);delay(500);}
  
  if(B==0) estado=1;  
}

void estado3() {

  digitalWrite(ElectrovalvulaPlantaSuperior,LOW);
  digitalWrite(ElectrovalvulaPlantaInferior,HIGH);
  
  if (TS==1) {digitalWrite(PilotoValvulaSuperior,LOW);}
  if ((TS==0)&&(B==1)) {digitalWrite(PilotoValvulaSuperior,HIGH);delay(500);digitalWrite(PilotoValvulaSuperior,LOW);delay(500);}
  
  if(B==0) estado=1;
}

void estado4() {

  digitalWrite(ElectrovalvulaPlantaSuperior,LOW);
  digitalWrite(ElectrovalvulaPlantaInferior,LOW);
  
  if (TI==1) {digitalWrite(PilotoValvulaInferior,LOW);}
  if (TS==1) {digitalWrite(PilotoValvulaSuperior,LOW);}
  if ((TS==0)&&(TI==0)&&(B==1)) {digitalWrite(PilotoValvulaInferior,HIGH);digitalWrite(PilotoValvulaSuperior,HIGH);delay(500);digitalWrite(PilotoValvulaInferior,LOW);digitalWrite(PilotoValvulaSuperior,LOW);delay(500);}
  
  if(B==0) {delay(5000);
            estado=1;}
}