 //*****************************************
//************ _8_Ascensor ************
//*****************************************
// Original code by canalplc
// http://canalplc.blogspot.com.es/
// Version 1.0
// July 2016
//*****************************************
//
#include <PC_SIMU.h>
PC_SIMU PLC;
bool SUBE_1 = 0;
bool SUBE_2 = 0;
bool SUBE_3 = 0; 
bool BAJA_0 = 0;
bool BAJA_1 = 0;
bool BAJA_2 = 0;
void setup() {
  pinMode(2, INPUT); // I0.2.- Final de carrera planta baja
  pinMode(3, INPUT); // I0.3.- Final de carrera planta 1ª
  pinMode(4, INPUT); // I0.4.- Final de carrera planta 2ª
  pinMode(5, INPUT); // I0.5.- Final de carrera plnata 3ª
  pinMode(6, INPUT); // I0.6.- Pulsasor planta baja
  pinMode(7, INPUT); // I0.7.- Pulsador planta 1ª
  pinMode(8, INPUT); // I1.0.- Pulsador planta 2ª
  pinMode(9, INPUT); // I1.1.- Pulsador planta 3ª
  pinMode(10, OUTPUT); // Q1.2.- Sube cabina
  pinMode(11, OUTPUT); // Q1.3.- Baja cabina
  pinMode(12, OUTPUT); // Q1.4.- Abre puerta cabina
  pinMode(13, OUTPUT); // Q1.5.- Cierra puerta cabina
  digitalWrite(10, 0);
  digitalWrite(11, 0);
  digitalWrite(12, 0);
  digitalWrite(13, 0);
  //
  PLC.INI(); 
}
void loop() {
  if(digitalRead(2) && digitalRead(6)) PUERTA_CABINA();
  if(digitalRead(2) && digitalRead(7)) SUBE_1 = 1;
  if(digitalRead(2) && digitalRead(8)) SUBE_2 = 1;
  if(digitalRead(2) && digitalRead(9)) SUBE_3 = 1;
  // Planta 1ª
  if(digitalRead(3) && digitalRead(6)) BAJA_0 = 1;
  if(digitalRead(3) && digitalRead(7)) PUERTA_CABINA();
  if(digitalRead(3) && digitalRead(8)) SUBE_2 = 1;
  if(digitalRead(3) && digitalRead(9)) SUBE_3 = 1;
  // Planta 2ª
  if(digitalRead(4) && digitalRead(6)) BAJA_0 = 1;
  if(digitalRead(4) && digitalRead(7)) BAJA_1 = 1;
  if(digitalRead(4) && digitalRead(8)) PUERTA_CABINA();
  if(digitalRead(4) && digitalRead(9)) SUBE_3 = 1;
  // Planta 3ª
  if(digitalRead(5) && digitalRead(6)) BAJA_0 = 1;
  if(digitalRead(5) && digitalRead(7)) BAJA_1 = 1;
  if(digitalRead(5) && digitalRead(8)) BAJA_2 = 1;
  if(digitalRead(5) && digitalRead(9)) PUERTA_CABINA();
  if(SUBE_1 == 1)
  {
    if(!digitalRead(3)) digitalWrite(10, 1); 
    else 
    {      
      digitalWrite(10, 0); 
      PUERTA_CABINA();
    }
  }
  if(SUBE_2 == 1)
  {
    if(!digitalRead(4)) digitalWrite(10, 1); 
    else
    {      
      digitalWrite(10, 0); 
      PUERTA_CABINA();
    }
  }
  if(SUBE_3 == 1)
  {  
    if(!digitalRead(5))digitalWrite(10, 1);
    else
    {      
      digitalWrite(10, 0); 
      PUERTA_CABINA();
    }
  }
  if(BAJA_0 == 1)
  {
    if(!digitalRead(2)) digitalWrite(11, 1); 
    else 
    {      
      digitalWrite(11, 0); 
      PUERTA_CABINA();
    }
  }
  if(BAJA_1 == 1)
  {
    if(!digitalRead(3)) digitalWrite(11, 1); 
    else 
    {      
      digitalWrite(11, 0); 
      PUERTA_CABINA();
    }
  }
  if(BAJA_2 == 1)
  {
    if(!digitalRead(4)) digitalWrite(11, 1); 
    else 
    {      
      digitalWrite(11, 0); 
      PUERTA_CABINA();
    }
  }
}
void PUERTA_CABINA()
{
  digitalWrite(12, 1);
  delay(10000);
  digitalWrite(12, 0);
  digitalWrite(13, 1);
  delay(6000);
  digitalWrite(13, 0);
  SUBE_1 = 0;
  SUBE_2 = 0;
  SUBE_3 = 0;
  BAJA_0 = 0;
  BAJA_1 = 0;
  BAJA_2 = 0;
}





