Ascensor 4 plantas

Colapsar
X
  • Filtrar
  • Tiempo
  • Mostrar
Limpiar todos
nuevos mensajes

  • Ascensor 4 plantas

    Buenas a todos!

    Tengo este código en arduino y ahora tengo que comunicarlo a traves de visual basic y hacer un scada en visual. No entiendo como asignar los leds y los pulsadores, así como la secuencia en un scada como este en la foto. Os dejo el código y el scada.

    Este sería el enunciado del proyecto!
    "Enunciado:

    Automatizar un ascensor en un edificio de cuatro plantas. Para ello dispone de los siguientes elementos:
    1. Pulsadores de llamada esterior (PE1, PE2 ,PE3 y PE4) para solicitar el ascensor, uno por cada planta.
    2. Pulsadores de destino dentro de la cabina (PI1, PI2 ,PI3 y PI4) .
    3. Diodos (D1, D2, D3 y D4) para indicar la presencia o ausencia del ascensor, uno por cada planta.
    4. Diodos (D5 y D6) para indicar puerta abierta y puerta cerrada

    La secuencia de control es la siguiente:
    1. Para acceder al ascensor el usuario presiona el pulsador de llamada desde el exterior en la planta en la que se encuentre.
    2. Si el ascensor está en la planta desde la que se le llama, se abrirá la puerta para permitir que entren las personas que lo quieran usar.
    3. Si el ascensor está en otra planta, sin abrir las puertas, procederá a desplazarse a la planta desde la que se le llama, para una vez en ella, proceder a abrir las puertas y de este modo permitir la entrada de las personas que lo quieran utilizar.
    4. Los usuarios una vez dentro de la cabina, podrán seleccionar la planta a la que desean ir siendo posible una única selección (otra versión con varios destinos).
    5. Cuando se cierren las puertas, el ascensor procederá a desplazarse hasta la planta seleccionada, abrirá las puertas para dejar salir a las personas que lo deseen, volverá a cerrar sus puertas y
    quedará listo para un nuevo uso.
    6. Si quedara alguna persona dentro, esta podrá seleccionar una nueva planta una vez que el ascensor a comenzado a abrir sus puertas, para una vez cerradas de nuevo desplazarse hasta el
    nuevo destino.
    • ALARMA
    1. La actuación sobre el pulsador interior (A) indicará que las personas que van dentro de la cabina han detectado una situación anómala o de peligro y por tanto el ascensor se detendrá de inmediato,
    esté donde esté.
    2. Mientras el ascensor se encuentra en alarma, ninguna orden exterior podrá ser obedecida.
    3. Únicamente se sale de la situación de Alarma de Cabina, actuando de nuevo sobre el pulsador "A" o sobre cualquier pulsador de planta ode apertura de puerta. La respuesta del ascensor en este punto será llevar a la cabina a la planta inmediatamente inferior al punto donde se encuentray abrir las puertas"


    Código:
    // Ascensor
    int pe1=0;
    int pe2=1;
    int pe3=2;
    int pe4=3;
    int pi1=4;
    int pi2=5;
    int pi3=6;
    int pi4=7;
    int d1=8;
    int d2=9;
    int d3=10;
    int d4=11;
    int d5=12;
    int d6=13;
    int A=14;
    int m1=15;
    int m2=16;
    int otras=17;
    int cont=0;
    int f0=0; //activar alarma
    int f1=0; //piso al que queremos ir
    int f2=0; // piso donde estamos
    int f3=0; //abrir ascensor al llegar al piso
    int f4=0; //condiion mismo piso
    
    void setup()
    {
    pinMode(pe1,INPUT);
    pinMode(pe2,INPUT);
    pinMode(pe3,INPUT);
    pinMode(pe4,INPUT);
    pinMode(pi1,INPUT);
    pinMode(pi2,INPUT);
    pinMode(pi3,INPUT);
    pinMode(pi4,INPUT);
    pinMode(d1,INPUT);
    pinMode(d2,INPUT);
    pinMode(d3,INPUT);
    pinMode(d4,INPUT);
    pinMode(d5,OUTPUT);
    pinMode(d6,OUTPUT);
    pinMode(A,INPUT);
    pinMode(otras,INPUT);
    pinMode(m1,OUTPUT);
    pinMode(m2,OUTPUT);
    f1=1;
    digitalWrite(d6,HIGH);
    
    }
    
    void loop()
    {
    //Activar alarma
    if(digitalRead(A==HIGH)&&(cont==0))
    {
    f0=1;
    while(digitalRead(A==LOW))
    {
    cont=1;
    while(cont==5)
    {
    cont++;
    }
    }
    }
    //Desactivara alarma
    if((digitalRead(A==HIGH)||digitalRead(otras==HIGH) )&&(cont!=0))
    {
    f0=0;
    }
    //Vaciar ascensor despues de alarma
    if((f0==0)&&(cont!=0))
    {
    while(digitalRead(d1==HIGH)||digitalRead(d2==HIGH) ||digitalRead(d3==HIGH)||digitalRead(d4==HIGH))
    {
    digitalWrite(m2,HIGH);
    }
    digitalWrite(m2,LOW);
    cont=0;
    digitalWrite(d6,LOW);
    delay(1000); //tiempo para abrir puertas
    digitalWrite(d5,HIGH);
    delay(10000); // tiempo de espera puertas abiertas
    digitalWrite(d5,LOW);
    delay(1000); // tiempo para cerrar puertas
    digitalWrite(d6,HIGH);
    }
    ///////////////////////////////////////////////////////////Ascensor llamar y ubicacion
    //llamar piso 1
    if(digitalRead((pe1==HIGH)||digitalRead(pi1==HIGH) )&&(f0==0))
    {
    f1=1;
    if(d1==HIGH)
    {
    f4=1;
    }
    }
    //llamar piso 2
    if(digitalRead((pe2==HIGH)||digitalRead(pi2==HIGH) )&&(f0==0))
    {
    f1=2;
    if(d2==HIGH)
    {
    f4=1;
    }
    }
    //llamar piso 3
    if(digitalRead((pe3==HIGH)||digitalRead(pi3==HIGH) )&&(f0==0))
    {
    f1=3;
    if(d3==HIGH)
    {
    f4=1;
    }
    }
    //llamar piso 4
    if(digitalRead((pe4==HIGH)||digitalRead(pi4==HIGH) )&&(f0==0))
    {
    f1=4;
    if(d4==HIGH)
    {
    f4=1;
    }
    }
    //ascensor piso 1
    if(digitalRead(d1==HIGH))
    {
    f2=1;
    }
    //ascensor piso 2
    if(digitalRead(d2==HIGH))
    {
    f2=2;
    }
    //ascensor piso 3
    if(digitalRead(d3==HIGH))
    {
    f2=3;
    }
    //ascensor piso 4
    if(digitalRead(d4==HIGH))
    {
    f2=4;
    }
    //subir y bajar
    while((f0==1)||(f2==f3))
    {
    //subir
    if(f1>f2)
    {
    digitalWrite(m1,HIGH);
    f3=1;
    }
    //bajar
    if(f1<f2)
    {
    digitalWrite(m2,HIGH);
    f3=1;
    }
    }
    //parar motores
    digitalWrite(m1,LOW);
    digitalWrite(m2,LOW);
    if((f2==f3)&&((f3==HIGH)||(f4==HIGH)))
    {
    digitalWrite(d6,LOW);
    delay(1000); //tiempo para abrir puertas
    digitalWrite(d5,HIGH);
    delay(10000); // tiempo de espera puertas abiertas
    digitalWrite(d5,LOW);
    delay(1000); // tiempo para cerrar puertas
    digitalWrite(d6,HIGH);
    f3=0;
    f4=0;
    }
    }
    Algo así sería
    Última edición por ourensemk2; 05-06-2017, 12:56 PM.

  • #2
    Hola! Después de todos estos días nadie me puede ayudar? como debo de empezar al menos....

    Comentario


    • #3
      Yo personalmente lo único que puedo decirte es que no tengo ni idea d qué va tu proyecto. Quizás esto mismo les ocurra a la mayoría de los usuarios de VbMundo...
      José María Movilla Cuadrado
      ______________________
      Normas del foro
      www.foro.vb-mundo.com
      www.vb-mundo.com

      Comentario


      • #4
        Tienes razón disculpa. Acabo de modificar el tema, y le he añadido el enunciado de dicho proyecto. Un saludo y espero alguna ayudita.

        gracias

        Comentario

        Trabajando...
        X