Problema con Ascensor de 3 pisos con un Motor DC

Tengo que realizar un ascensor de 3 pisos, cada uno con 1 boton y 1 final de carrera, además añadir un motor DC con 2 relay, para que muestre la subida y la bajada del ascensor, junto con un display LCD que diga en que piso está.
Este es mi código, no logro hacerlo funcionar..

#include <LiquidCrystal_I2C.h>
 
#define LlamadaPlantaBaja 2     // Control pin pulsador primera planta
#define LlamadaPrimerPiso 3     // Control pin pulsador segunda planta
#define LlamadaSegundoPiso 4     // Control pin pulsador tercera planta
#define FcPlantaBaja 5     // Control pin sensor primera planta
#define FcPrimerPiso 6     // Control pin sensor segunda planta
#define FcSegundoPiso 7     // Control pin sensor tercera planta
#define PuertaPlantaBaja 8 // LLaves switch que detectan las puertas abiertas
#define PuertaPrimerPiso 9
#define PuertaSegundoPiso 10
#define ContactorSube 11 
#define ContactorBaja 12
#define I2C_ADDR 0x27 // Dirección de comunicación I2C del módulo con el chip PCF8574T

LiquidCrystal_I2C lcd(I2C_ADDR, 16, 2);

int PULSADOR_1 = 0; //variables para controlar el estado de los pulsadores de cada planta
int PULSADOR_2 = 0;
int PULSADOR_3 = 0;

int SENSOR_1;
int SENSOR_2;
int SENSOR_3;
  
void setup()
   {
        Serial.begin(9600);

        pinMode(ContactorSube, OUTPUT);//MOTOR
        pinMode(ContactorBaja, OUTPUT);//MOTOR
       
        pinMode(LlamadaPlantaBaja, INPUT);//PULSADOR
        pinMode(LlamadaPrimerPiso, INPUT);//PULSADOR
        pinMode(LlamadaSegundoPiso, INPUT);//PULSADOR

        pinMode(FcPlantaBaja, OUTPUT);//SENSOR
        pinMode(FcPrimerPiso, OUTPUT);//SENSOR
        pinMode(FcSegundoPiso, OUTPUT);//SENSOR
   }
void loop()
   {            

        PULSADOR_1=digitalRead(2); //lee el estado del pin 2 asignado para la planta primera
        PULSADOR_2=digitalRead(3); //lee el estado del pin 3 asignado para la planta segunda
        PULSADOR_3=digitalRead(4); //lee el estado del pin 4 asignado para la planta tercera

        SENSOR_1=digitalRead(5); //lee el estado del pin 5 asignado para la planta primera
        SENSOR_2=digitalRead(6); //lee el estado del pin 6 asignado para la planta segunda
        SENSOR_3=digitalRead(7); //lee el estado del pin 7 asignado para la planta tercera

        
        if(digitalRead(PULSADOR_1)==HIGH) //si se pulsa el boton de la primera planta
        {
          if(digitalRead(SENSOR_2)==LOW) // y la planta actual es la segunda, el ascensor baja
          {
            digitalWrite(ContactorSube, LOW);     // Arrancamos para BAJAR
            digitalWrite(ContactorBaja, HIGH);
            delay(900); //tiempo de bajada del ascensor de la planta 2 a la planta 1
            
            digitalWrite(FcPlantaBaja, LOW); //como hemos pulsado el pulsador de la planta primera, la planta actual es la primera     
            digitalWrite(FcPrimerPiso, HIGH);
          }
          else(digitalRead(SENSOR_3)==LOW); //si esta la cabina en la planta tercera el ascensor baja mas timempo
          {           
            digitalWrite(ContactorSube, LOW);     // Arrancamos para BAJAR
            digitalWrite(ContactorBaja, HIGH);
            delay(1800); //tiempo de bajada del ascensor de la planta 3 a la planta 1

            digitalWrite(FcPlantaBaja, LOW); //como hemos pulsado el pulsador de la planta primera, la planta actual es la primera
            digitalWrite(FcSegundoPiso, HIGH);
          }
        lcd.setCursor(0,0);
        lcd.print("PLANTA ACTUAL[0]");
        digitalWrite(PuertaPlantaBaja, LOW);        
        }
        if(digitalRead(PULSADOR_2)==HIGH) //si pulsamos el boton de la planta segunda
        {
          
          if(digitalRead(SENSOR_1)==LOW) //y la planta actual es la primera
          {
            digitalWrite(ContactorSube, HIGH);     // Arrancamos para SUBIR
            digitalWrite(ContactorBaja, LOW);
            delay(900); //tiempo para subir el ascensor de la planta 1 a la planta 2

            digitalWrite(FcPrimerPiso, LOW); //ahora la planta actual es la segunda
            digitalWrite(FcPlantaBaja, HIGH);         
          }
          else(digitalRead(SENSOR_3)==LOW); //y la planta actual es la tercera
          {
            digitalWrite(ContactorSube, LOW);     // Arrancamos para BAJAR
            digitalWrite(ContactorBaja, HIGH);
            delay(900); //tiempo para bajar el ascensor de la planta 3 a la planta 2			

            digitalWrite(FcPrimerPiso, LOW); //ahora la planta actual es la segunda
            digitalWrite(FcSegundoPiso, HIGH);
          }
        lcd.setCursor(0,0);
        lcd.print("PLANTA ACTUAL[1]");
        digitalWrite(PuertaPrimerPiso, LOW);         
        }
        if(digitalRead(PULSADOR_3)==HIGH) //si pulsamos el boton de la tercera planta
        {
          if(digitalRead(SENSOR_2)==LOW)// y la planta actual es la segunda
          {
            digitalWrite(ContactorSube, HIGH);     // Arrancamos para SUBIR
            digitalWrite(ContactorBaja, LOW);
            delay(900); //tiempo para subir de la segunda planta a la tercera

            digitalWrite(FcSegundoPiso, LOW); //ahora la planta actual es la tercera    
            digitalWrite(FcPrimerPiso, HIGH);        
          }
          else(digitalRead(SENSOR_1)==LOW); //y la planta actual es la primera
          {
            digitalWrite(ContactorSube, HIGH);     // Arrancamos para SUBIR
            digitalWrite(ContactorBaja, LOW);
            delay(1800); //tiempo para subir de la primera planta a la tercera
          
            digitalWrite(FcSegundoPiso, LOW); //ahora la planta actual es la tercera
            digitalWrite(FcPlantaBaja, HIGH);
          }
        lcd.setCursor(0,0);
        lcd.print("PLANTA ACTUAL[2]");
        digitalWrite(PuertaSegundoPiso, LOW);
        }
}

Agradecería su ayuda.

Moderador:

Doble posteo
Hilo cerrado

Lee las normas del foro
La próxima sanción.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.