Go Down

Topic: Proyecto de ascensor 3 pisos  (Read 531 times) previous topic - next topic

leonardo_arenas

Jul 15, 2018, 12:53 am Last Edit: Jul 15, 2018, 06:01 am by surbyte
hola chic@s
soy nuevo en el tema de arduino y necesito su ayuda para la creación de un ascensor de 3 pisos
la verdad no manejo mucho el tema de programación de arduino y se que ustedes me pueden ayudar.
los materiales a usar son los siguientes:
sensor de proximidad
botoneras
motor paso a paso
o motor cc pequeño de 5 volt
todos los elementos van adjuntos

espero chicos me puedan ayudar


leonardo_arenas

hola chicos estoy en la construcción de un ascensor de tres pisos he compilado el código y al momento de hacer las conexiones y todo funciona muy bien pero al momento de llamar en algún piso del ascensor los sensores no me están cumpliendo su función
espero me puedan ayudar
estoy ocupando un sensor de obstáculo y unas botoneras a y un motor cc de 5 volt


#define E1 10     // activa el Pin para motor
#define I1 8     // Control pin 1 para motor
#define I2 9     // Control pin 2 para motor

#define P1 2     // Control pin pulsador primera planta
#define P2 3     // Control pin pulsador segunda planta
#define P3 4     // Control pin pulsador tercera planta

#define S1 5     // Control pin sensor primera planta
#define S2 6     // Control pin sensor segunda planta
#define S3 7     // Control pin sensor tercera planta


const int ledPin = 11; //control pin para controlar los leds

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 = 0; //variables para controlar el estado de los sensores de cada planta
int SENSOR_2 = 0;
int SENSOR_3 = 0;


void setup(){

     
       pinMode(I1, OUTPUT);//MOTOR
       pinMode(I2, OUTPUT);//MOTOR
       pinMode(E1, OUTPUT);//MOTOR
       
       pinMode(P1, INPUT);//PULSADOR
       pinMode(P2, INPUT);//PULSADOR
       pinMode(P3, INPUT);//PULSADOR

       pinMode(S1, INPUT);//SENSOR
       pinMode(S2, INPUT);//SENSOR
       pinMode(S3, INPUT);//SENSOR

       

       pinMode(ledPin, OUTPUT);//LED CABINA
  }

void loop()
  {   

        digitalWrite(ledPin, HIGH);
     
       delay(10);

       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(PULSADOR_1==HIGH) //si se pulsa el boton de la primera planta
       {
         if(SENSOR_2==HIGH) // y la planta actual es la segunda, el ascensor baja
         {
            digitalWrite(E1, HIGH);     // Activamos Motor
       
           digitalWrite(I1, LOW);     // Arrancamos para BAJAR
           digitalWrite(I2, HIGH);
           
            if(SENSOR_1==HIGH){
           digitalWrite(E1, LOW);      // Paramos Motor
            }
           
           
         }
         if(SENSOR_3==HIGH) //si esta la cabina en la planta tercera el ascensor baja mas timempo
         {
           
           digitalWrite(E1, HIGH);     // Activamos Motor
       
           digitalWrite(I1, LOW);     // Arrancamos para BAJAR
           digitalWrite(I2, HIGH);
           
           if(SENSOR_1==HIGH){
           digitalWrite(E1, LOW);      // Paramos Motor
           }
     
         }
       }
       else if(PULSADOR_2==HIGH) //si pulsamos el boton de la planta segunda
       {
         
         if(SENSOR_1==HIGH) //y la planta actual es la primera
         {
           digitalWrite(E1, HIGH);     // Activamos Motor
       
           digitalWrite(I1, HIGH);     // Arrancamos para SUBIR
           digitalWrite(I2, LOW);
           
           if(SENSOR_2==HIGH){

           digitalWrite(E1, LOW);      // Paramos Motor

           }
     
           
         }
         if(SENSOR_3==HIGH) //y la planta actual es la tercera
         {
         
           digitalWrite(E1, HIGH);     // Activamos Motor
       
           digitalWrite(I1, LOW);     // Arrancamos para BAJAR
           digitalWrite(I2, HIGH);
           
           if(SENSOR_2==HIGH){
     
           digitalWrite(E1, LOW);      // Paramos Motor

           }
       
         }

       }
       else if(PULSADOR_3==HIGH) //si pulsamos el boton de la tercera planta
       {
         
         if(SENSOR_2==HIGH)// y la planta actual es la segunda
         {
           digitalWrite(E1, HIGH);     // Activamos Motor
       
           digitalWrite(I1, HIGH);     // Arrancamos para SUBIR
           digitalWrite(I2, LOW);
           
           if(SENSOR_3==HIGH){
           digitalWrite(E1, LOW);      // Paramos Motor
           }
         
           
         }
         if(SENSOR_1==HIGH) //y la planta actual es la primera
         {
           
           digitalWrite(E1, HIGH);     // Activamos Motor
       
           digitalWrite(I1, HIGH);     // Arrancamos para SUBIR
           digitalWrite(I2, LOW);
           if(SENSOR_3==HIGH){
           digitalWrite(E1, LOW);      // Paramos Motor
           }
         }
       }
  }

surbyte

Ve a Documentación => Indice de temas tutoriales => clases de Youtube
y lee todos los tutoriales que te resulten necesarios.
Sin base de programación no puedes hacer un control de ascensor de N pisos.

Kike_GL

Debes plantear mejor tus requerimientos.

Cuantos botones tendra cada piso ?
Lo mas facil seria que cada piso cuente con 3 botones, uno para cada piso y todos en paralelo entre ellos.

Asi si estas en 3 piso, puerta esta cerrada y no hay carga, presionarias 3 para que suba a tu piso, abres puerta (se bloquea) lo cargas y cierras y presionas 1 por ejemplo. Al llegar al 1 suena alarma o se habre la puerta para bloquear hasta que descarguen antes de que alguien mas lo llame.
Saludos, Kike_GL

Kike_GL

Creo que primero tienes que explicarnos bien lo que pretendes.

Respecto a la lógica:

Según tu código mientras pulsas piso 1 if (PULSADOR_1==HIGH) y ascensor esta en piso 2do if (SENSOR_2==HIGH) arranca el motor y logicamente ya no esta en el piso 2do por lo que SENSOR_2 esta LOW y nunca entrara nuevamente aqui y if (SENSOR_1==HIGH) de modo que nunca para el motor.

El mismo comentario para los otros pisos.

Recuerda que loop() se ejecuta muchas veces y que todo el tiempo se actualizan las variables del principio

Code: [Select]

PULSADOR_1=digitalRead(2);
PULSADOR_2=digitalRead(3);
PULSADOR_3=digitalRead(4);

SENSOR_1=digitalRead(5);
SENSOR_2=digitalRead(6);
SENSOR_3=digitalRead(7);


 

Respecto al código en si:
1. int PULSADOR_1 = 0; lo deberías cambiar por bool PULSADOR_1 = false;
2. if (PULSADOR_1==HIGH) es lo mismo que if (PULSADOR_1) pero mucho mejor seria if (digitalRead(2)) pero se entenderá mas que usaras if (digitalRead(P1))
Saludos, Kike_GL

surbyte

#5
Jul 15, 2018, 10:59 pm Last Edit: Jul 15, 2018, 11:01 pm by surbyte
El foro tiene normas que debes leer.
1. Colocar títulos adecuados a tu consulta.

"Ayuda con error" no es un título adecuado. Todos preguntan lo mismo.
Coloca algo relacionado con tu problema.
Asi que editalo

2. El código debe verse con etiquetas algo que tmb esta indicado en las normas del foro.
Editalo.
Te pasé una guia por privado.

3. Ya había movido tu consulta Proyecto de ascensor 3 pisosa Hardware y tenías un cartel de Movido y vuelves a postear otro hilo con el mismo tema. Eso es otra flata por doble posteo.
Ahora voy a unir ambas preguntas en la misma.
Asi que ve a Software donde pertenece esta hilo.

Para nada es un proyecto. Lo será para ti pero no para el standard del foro


Go Up