// ASCENSOR
const int ROJO=13; // LED ROJO = ASCENSOR OCUPADO
const int VERDE=12; // LED VERDE = ASCENSOR LIBRE
const int P1 = 8; // PULSADOR PRIMER PISO
const int P2 = 7; // PULSADOR SEGUNDO PISO
const int P3 = 6; // PULSADOR TERCER PISO
const int S1 = 11; // SENSOR PRIMER PISO
const int S2 = 10; // SENSOR SEGUNDO PISO
const int S3= 9; // SENSOR TERCER PISO
const int MOTOR=5; // ARRANQUE Y PARADA DEL MOTOR
const int MOTORPIN2=4;
const int MOTORPIN7=3;
int piso; // VARIABLE QUE IDENTIFICA EL PISO EN EL QUE ESTÁ EL ASCENSOR
void setup() {
pinMode(ROJO, OUTPUT);
pinMode(VERDE,OUTPUT);
pinMode(P1,INPUT);
pinMode(P2,INPUT);
pinMode(P3,INPUT);
pinMode(S1,INPUT);
pinMode(S2,INPUT);
pinMode(S3,INPUT);
pinMode(MOTOR, OUTPUT);
pinMode(MOTORPIN2, OUTPUT);
pinMode(MOTORPIN7, OUTPUT);
while(digitalRead(S1) == LOW){ // INICIALMENTE EL ASCENSOR SE LLEVA AL PISO
bajar();
}
piso = 1;
}
void loop(){
digitalWrite(MOTOR, LOW); // EL MOTOR PARA
digitalWrite(ROJO,LOW);
digitalWrite(VERDE,HIGH); // ASCENSOR LIBRE
int pulsador_1 = digitalRead(P1);
int pulsador_2 = digitalRead(P2);
int pulsador_3 = digitalRead(P3);
if (pulsador_3 == HIGH){
while(digitalRead(S3) == LOW){ // SUBE MIENTRAS EL ASCENSOR NO HA LLEGADO AL TERCER PISO
subir();
}
piso = 3;
}
if (pulsador_2 == HIGH && piso < 2){
while(digitalRead(S2) == LOW){ // SUBE MIENTRAS EL ASCENSOR NO HA LLEGADO AL SEGUNDO PISO
subir();
}
piso = 2;
}
if (pulsador_2 == HIGH && piso > 2){
while(digitalRead(S2) == LOW){ // BAJA MIENTRAS EL ASCENSOR NO HA LLEGADO AL SEGUNDO PISO
bajar();
}
piso = 2;
}
if (pulsador_1 == HIGH){
while(digitalRead(S1) == LOW){ // BAJA MIENTRAS EL ASCENSOR NO HA LLEGADO AL PRIMER PISO
bajar();
}
piso = 1;
}
}
void bajar(){
digitalWrite(ROJO,HIGH); // ASCENSOR OCUPADO
digitalWrite(VERDE,LOW);
digitalWrite(MOTOR, HIGH); // EL MOTOR ARRANCA
digitalWrite(MOTORPIN2, LOW); // EL ASCENSOR BAJA
digitalWrite(MOTORPIN7,HIGH); // EL ASCENSOR BAJA
}
void subir(){
digitalWrite(ROJO,HIGH); // ASCENSOR OCUPADO
digitalWrite(VERDE,LOW);
digitalWrite(MOTOR,HIGH); // EL MOTOR ARRANCA
digitalWrite(MOTORPIN2, HIGH); // EL ASCENSOR SUBE
digitalWrite(MOTORPIN7, LOW); // EL ASCENSOR SUBE
}