You are on page 1of 8

UNIVERSIDAD CATLICA DE SANTA MARA

ESCUELA
PROFESIONAL
DE
INGENIERA
MECNICA ELCTRICA Y MECATRNICA

MECNICA,

RESOLUCIN DEL EXAMEN


Presentado por: MAX PALACO MAMANI
1. Un elevador de 3 niveles se requiere automatizar mediante un microcontrolador. Las
especificaciones del funcionamiento requerido son:
Al exterior de la cabina se dispone de dos botones para llamado de bajada o subida.
Al interior se dispone de un tablero con cuatro botones (1, 2, 3 y Parada).
A los 5 segundos de llegado al nivel indicado se abre la puerta por un tiempo de 30
segundos al cabo de los cuales se cierra la puerta a menos que se encuentren personas
en medio del sensor de puerta.
Deben estar sealizados el nivel en el que se encuentra y el estado de paro o arranque
del ascensor.
a) Dibuje el circuito correspondiente.
b) Dibuje el diagrama de flujo.
c) Escriba y explique el programa.

CDIGO
//UNIVERSIDAD CATOLICA DE SANTA MARIA
//EPIMMEM
//RESOLUCION DEL EXAMEN II FASE
//PRESENTADO POR: PALACO MANI MAX
int BOTON_PISO_1 = 13;
int BOTON_PISO_2 = 12;
int BOTON_PISO_3 = 11;
int PARAR= 0;
int IND_NIVEL_1 = 10;
int IND_NIVEL_2 = 9;
int IND_NIVEL_3 = 8;
int ABRIR_PUERTA = 7;
int CERRAR_PUERTA = 6;
int SUBIR = 5;
int BAJAR = 4;
int p4 = 0;
int VAL_NIVEL_P1 = 0;
int VAL_NIVEL_P2 = 0;
int VAL_NIVEL_P3 = 0;
int VAL_P4 = 0;
int tiempo = 5000; //variable para el delay
int SENSOR = 1; //bandera
void setup()
{
pinMode(BOTON_PISO_1, INPUT);
pinMode(BOTON_PISO_2, INPUT);
pinMode(BOTON_PISO_3, INPUT);
pinMode(PARAR, INPUT);
pinMode(IND_NIVEL_1, OUTPUT);
pinMode(IND_NIVEL_2, OUTPUT);
pinMode(IND_NIVEL_3, OUTPUT);
pinMode(ABRIR_PUERTA, OUTPUT);
pinMode(CERRAR_PUERTA, OUTPUT);
pinMode(SUBIR, OUTPUT);
pinMode(BAJAR, OUTPUT);
}

void PUERTA()
{
digitalWrite(ABRIR_PUERTA, 1);
delay(30000);
digitalWrite(ABRIR_PUERTA, 0);
digitalWrite(CERRAR_PUERTA, 1);
delay(30000);
digitalWrite(CERRAR_PUERTA, 0);
}
void loop()
{
VAL_NIVEL_P1 = digitalRead(BOTON_PISO_1);
VAL_NIVEL_P2 = digitalRead(BOTON_PISO_2);
VAL_NIVEL_P3 = digitalRead(BOTON_PISO_3);
VAL_P4=digitalRead(PARAR);
if(VAL_P4!=1)
{
// PRIMER PISO
if (VAL_NIVEL_P1 == HIGH) {
if (SENSOR == 2 || SENSOR == 3) {
digitalWrite(BAJAR, 1);
delay(tiempo / 2);
}
if (SENSOR == 3) {
digitalWrite(IND_NIVEL_1, 0);
//delay(tiempo);
digitalWrite(IND_NIVEL_2, 1);
delay(tiempo);
digitalWrite(IND_NIVEL_2, 0);
SENSOR = 1;
}
digitalWrite(IND_NIVEL_1, 1);
delay(tiempo / 2);
digitalWrite(IND_NIVEL_2, 0);
digitalWrite(IND_NIVEL_3, 0);
delay(tiempo);
PUERTA();
digitalWrite(BAJAR, 0);
//SEGUNDO PISO
if (VAL_NIVEL_P2== HIGH) {
if (SENSOR == 1) {

digitalWrite(SUBIR, 1);
delay(tiempo / 2);
SENSOR = 2;
} else if (SENSOR == 3) {
digitalWrite(BAJAR, 1);
delay(tiempo / 2);
SENSOR = 2;
}
digitalWrite(IND_NIVEL_2, 1);
digitalWrite(IND_NIVEL_1, 0);
digitalWrite(IND_NIVEL_3, 0);
delay(tiempo);
PUERTA();
digitalWrite(SUBIR, 0);
digitalWrite(BAJAR, 0);
}
//TERCER PISO
if (VAL_NIVEL_P3 == HIGH) {
if (SENSOR == 1 || SENSOR == 2) {
digitalWrite(SUBIR, 1);
delay(tiempo / 2);
}
if (SENSOR == 1) {
digitalWrite(IND_NIVEL_3, 0);
delay(tiempo);
digitalWrite(IND_NIVEL_2, 1);
delay(tiempo);
digitalWrite(IND_NIVEL_2, 0);
SENSOR = 3;
}
digitalWrite(IND_NIVEL_3, 1);
digitalWrite(IND_NIVEL_2, 0);
digitalWrite(IND_NIVEL_1, 0);
delay(tiempo);
PUERTA();
digitalWrite(SUBIR, 0);
}
}
}
else
{
digitalWrite(SUBIR,0);
delay(tiempo);

digitalWrite(BAJAR,0);
delay(tiempo);
}
}

You might also like