Proyecto de ascensor 3 pisos

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

stepper-motor-control-2.pdf (257 KB)

reflecIR-TCRT5000.pdf (164 KB)

pulsador-6mm (1).pdf (202 KB)

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
}
}
}
}

reflecIR-TCRT5000.pdf (164 KB)

pulsador-6mm (1).pdf (202 KB)

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.

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.

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

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))

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

1 Like