Ascensor
Dependencies: Debounced SRF05 mbed-rtos mbed
Fork of rtos_mutex by
main.cpp@8:489cb2245a3a, 2017-06-08 (annotated)
- Committer:
- ProcesadoresESDJ
- Date:
- Thu Jun 08 14:24:24 2017 +0000
- Revision:
- 8:489cb2245a3a
- Parent:
- 7:bd0aa7f21f53
Ascensor
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
emilmont | 1:0f886ffbe0c1 | 1 | #include "mbed.h" |
ProcesadoresESDJ | 8:489cb2245a3a | 2 | #include "SRF05.h" |
ProcesadoresESDJ | 8:489cb2245a3a | 3 | #include "DebouncedIn.h" |
mbed_official | 7:bd0aa7f21f53 | 4 | #include "rtos.h" |
ProcesadoresESDJ | 8:489cb2245a3a | 5 | |
ProcesadoresESDJ | 8:489cb2245a3a | 6 | |
ProcesadoresESDJ | 8:489cb2245a3a | 7 | /* |
ProcesadoresESDJ | 8:489cb2245a3a | 8 | Para este proyecto se crearán tres hilos: |
ProcesadoresESDJ | 8:489cb2245a3a | 9 | |
ProcesadoresESDJ | 8:489cb2245a3a | 10 | 1. Sensado - correspondiente al sensado de la distancia de la cabina con respecto al SRF05. |
ProcesadoresESDJ | 8:489cb2245a3a | 11 | |
ProcesadoresESDJ | 8:489cb2245a3a | 12 | 2. Botones - correspondiente a los 8 botones instalados en el ascensor: |
ProcesadoresESDJ | 8:489cb2245a3a | 13 | - Tres de selección del piso deseado. |
ProcesadoresESDJ | 8:489cb2245a3a | 14 | - Uno de paro de emergencia. |
ProcesadoresESDJ | 8:489cb2245a3a | 15 | - Cuatro de llamado del ascensor en cada piso: uno en el primero (subir), uno en el tercero (bajar) y dos en el segundo (subir, bajar). |
ProcesadoresESDJ | 8:489cb2245a3a | 16 | |
ProcesadoresESDJ | 8:489cb2245a3a | 17 | 3. Pisos - correspondiente al llamado a cada uno de los pisos, dentro de su sección crítica se configurarán las salidas de los servos para la apertura de puertas en cada uno. |
ProcesadoresESDJ | 8:489cb2245a3a | 18 | |
ProcesadoresESDJ | 8:489cb2245a3a | 19 | El recurso compartido será la disponibilidad del ascensor para ser llamado, el cual se llamará "disponible". |
ProcesadoresESDJ | 8:489cb2245a3a | 20 | */ |
ProcesadoresESDJ | 8:489cb2245a3a | 21 | |
ProcesadoresESDJ | 8:489cb2245a3a | 22 | // Declaración de puertos de transmisión y recepción para comunicación serial |
ProcesadoresESDJ | 8:489cb2245a3a | 23 | Serial pc(USBTX, USBRX); |
ProcesadoresESDJ | 8:489cb2245a3a | 24 | |
ProcesadoresESDJ | 8:489cb2245a3a | 25 | // Declaración de pines para las puertas a partir de salidas PWM |
ProcesadoresESDJ | 8:489cb2245a3a | 26 | PwmOut servo1(PTD0); // servo 1 - primer piso |
ProcesadoresESDJ | 8:489cb2245a3a | 27 | PwmOut servo2(PTD5); // servo 2 - segundo piso |
ProcesadoresESDJ | 8:489cb2245a3a | 28 | PwmOut servo3(PTA13); // servo 3 - tercer piso |
ProcesadoresESDJ | 8:489cb2245a3a | 29 | int STOP=0; // estado detenido inicializado en 0 |
ProcesadoresESDJ | 8:489cb2245a3a | 30 | |
ProcesadoresESDJ | 8:489cb2245a3a | 31 | // variables de estado para el giro del motor DC - up, down |
ProcesadoresESDJ | 8:489cb2245a3a | 32 | int motor_up; |
ProcesadoresESDJ | 8:489cb2245a3a | 33 | int motor_down; |
ProcesadoresESDJ | 8:489cb2245a3a | 34 | |
ProcesadoresESDJ | 8:489cb2245a3a | 35 | // Declaración de pines para los botones |
ProcesadoresESDJ | 8:489cb2245a3a | 36 | DebouncedIn boton1(PTC11); // Botón de llamado desde el primer piso |
ProcesadoresESDJ | 8:489cb2245a3a | 37 | DebouncedIn boton2b(PTC10); // Botón de llamado desde el segundo piso para bajar |
ProcesadoresESDJ | 8:489cb2245a3a | 38 | DebouncedIn boton2s(PTC6); // Botón de llamado desde el segundo piso para subir |
ProcesadoresESDJ | 8:489cb2245a3a | 39 | DebouncedIn boton3(PTC5); // Botón de llamado desde el tercer piso |
ProcesadoresESDJ | 8:489cb2245a3a | 40 | DebouncedIn boton1i(PTC4); // Botón para ir al primer piso |
ProcesadoresESDJ | 8:489cb2245a3a | 41 | DebouncedIn boton2i(PTC3); // Botón para ir al segundo piso |
ProcesadoresESDJ | 8:489cb2245a3a | 42 | DebouncedIn boton3i(PTC0); // Botón para ir al tercer piso |
ProcesadoresESDJ | 8:489cb2245a3a | 43 | DebouncedIn boton_p(PTC7); // Botón de paro |
ProcesadoresESDJ | 8:489cb2245a3a | 44 | |
ProcesadoresESDJ | 8:489cb2245a3a | 45 | // Declaración pines del sensor de ultrasonido |
ProcesadoresESDJ | 8:489cb2245a3a | 46 | SRF05 sensor(PTD3,PTD1); // (Trigger, Echo) |
ProcesadoresESDJ | 8:489cb2245a3a | 47 | |
ProcesadoresESDJ | 8:489cb2245a3a | 48 | // Declaración pines digitales para los led's indicadores de piso |
ProcesadoresESDJ | 8:489cb2245a3a | 49 | DigitalOut led1(PTE5); // piso 1 |
ProcesadoresESDJ | 8:489cb2245a3a | 50 | DigitalOut led2(PTE4); // piso 2 |
ProcesadoresESDJ | 8:489cb2245a3a | 51 | DigitalOut led3(PTE3); // piso 3 |
ProcesadoresESDJ | 8:489cb2245a3a | 52 | |
ProcesadoresESDJ | 8:489cb2245a3a | 53 | // Declaración pines de salida para el motor principal tipo PWM para inversión de giro |
ProcesadoresESDJ | 8:489cb2245a3a | 54 | PwmOut ascender(PTC1); |
ProcesadoresESDJ | 8:489cb2245a3a | 55 | PwmOut bajada(PTC2); |
ProcesadoresESDJ | 8:489cb2245a3a | 56 | DigitalOut enable(PTB3); |
ProcesadoresESDJ | 8:489cb2245a3a | 57 | |
ProcesadoresESDJ | 8:489cb2245a3a | 58 | // Hilos |
ProcesadoresESDJ | 8:489cb2245a3a | 59 | Thread pul; |
ProcesadoresESDJ | 8:489cb2245a3a | 60 | Thread sen; |
ProcesadoresESDJ | 8:489cb2245a3a | 61 | Thread pis; |
ProcesadoresESDJ | 8:489cb2245a3a | 62 | |
ProcesadoresESDJ | 8:489cb2245a3a | 63 | |
ProcesadoresESDJ | 8:489cb2245a3a | 64 | //A continuación se describe el número de botones a usar |
ProcesadoresESDJ | 8:489cb2245a3a | 65 | // los pisos del ascensor, el botón de paro |
ProcesadoresESDJ | 8:489cb2245a3a | 66 | // y las distancias entre los pisos |
ProcesadoresESDJ | 8:489cb2245a3a | 67 | |
ProcesadoresESDJ | 8:489cb2245a3a | 68 | int i = 0; |
ProcesadoresESDJ | 8:489cb2245a3a | 69 | int botones[4]; // Botones de selección de piso |
ProcesadoresESDJ | 8:489cb2245a3a | 70 | int pisos[3]; // Número de pisos del ascensor |
ProcesadoresESDJ | 8:489cb2245a3a | 71 | int paro; // variable de paro |
ProcesadoresESDJ | 8:489cb2245a3a | 72 | int disponible=0; // Estado de ejecución del ascensor |
ProcesadoresESDJ | 8:489cb2245a3a | 73 | float distancia; // Distancia real medida del sensor |
ProcesadoresESDJ | 8:489cb2245a3a | 74 | float dist_p3=8.0; // Distancia del sensor al piso 3 |
ProcesadoresESDJ | 8:489cb2245a3a | 75 | float dist_p2=28.0; // Distancia del sensor al piso 2 |
ProcesadoresESDJ | 8:489cb2245a3a | 76 | float dist_p1=47.0; // Distancia del sensor al piso 1 |
ProcesadoresESDJ | 8:489cb2245a3a | 77 | |
ProcesadoresESDJ | 8:489cb2245a3a | 78 | // Evaluación de estado de los pulsadores |
ProcesadoresESDJ | 8:489cb2245a3a | 79 | void pulsadores(void const *args){ |
ProcesadoresESDJ | 8:489cb2245a3a | 80 | |
ProcesadoresESDJ | 8:489cb2245a3a | 81 | while(1) { |
ProcesadoresESDJ | 8:489cb2245a3a | 82 | |
ProcesadoresESDJ | 8:489cb2245a3a | 83 | // Si se presiona el botón de paro se activa el estado detenido y el estado de paro |
ProcesadoresESDJ | 8:489cb2245a3a | 84 | if (boton_p.read()==1){ // Lectura de boton de paro |
ProcesadoresESDJ | 8:489cb2245a3a | 85 | STOP=1; |
ProcesadoresESDJ | 8:489cb2245a3a | 86 | paro=1; |
ProcesadoresESDJ | 8:489cb2245a3a | 87 | } |
ProcesadoresESDJ | 8:489cb2245a3a | 88 | // Si se presiona el botón de llamado desde el primer piso, es porque se activó el botón 0 |
ProcesadoresESDJ | 8:489cb2245a3a | 89 | if (boton1.read()==1){ |
ProcesadoresESDJ | 8:489cb2245a3a | 90 | botones[0]=1; |
ProcesadoresESDJ | 8:489cb2245a3a | 91 | } |
ProcesadoresESDJ | 8:489cb2245a3a | 92 | // Si se presiona el botón de llamado desde el segundo piso para bajar, es porque se activó el botón 1 |
ProcesadoresESDJ | 8:489cb2245a3a | 93 | // Lo que hará que baje al primer piso |
ProcesadoresESDJ | 8:489cb2245a3a | 94 | if (boton2b.read()==1){ |
ProcesadoresESDJ | 8:489cb2245a3a | 95 | botones[1]=1; |
ProcesadoresESDJ | 8:489cb2245a3a | 96 | } |
ProcesadoresESDJ | 8:489cb2245a3a | 97 | // Si se presiona el botón de llamado desde el segundo piso para subir, es porque se activó el botón 2 |
ProcesadoresESDJ | 8:489cb2245a3a | 98 | // Lo que hará que suba al tercer piso |
ProcesadoresESDJ | 8:489cb2245a3a | 99 | if (boton2s.read()==1){ |
ProcesadoresESDJ | 8:489cb2245a3a | 100 | botones[2]=1; |
ProcesadoresESDJ | 8:489cb2245a3a | 101 | } |
ProcesadoresESDJ | 8:489cb2245a3a | 102 | // Si se presiona el botón de llamado desde tercer piso, es porque se activó el botón 3 |
ProcesadoresESDJ | 8:489cb2245a3a | 103 | if (boton3.read()==1){ |
ProcesadoresESDJ | 8:489cb2245a3a | 104 | botones[3]=1; |
ProcesadoresESDJ | 8:489cb2245a3a | 105 | } |
ProcesadoresESDJ | 8:489cb2245a3a | 106 | // Si se presiona el botón para ir al primer piso, la cabina se desplazará al primer piso |
ProcesadoresESDJ | 8:489cb2245a3a | 107 | if (boton1i.read()==1){ |
ProcesadoresESDJ | 8:489cb2245a3a | 108 | pisos[0]=1; |
ProcesadoresESDJ | 8:489cb2245a3a | 109 | } |
ProcesadoresESDJ | 8:489cb2245a3a | 110 | // Si se presiona el botón para ir al segundo piso, la cabina se desplazará al segundo piso |
ProcesadoresESDJ | 8:489cb2245a3a | 111 | if (boton2i.read()==1){ |
ProcesadoresESDJ | 8:489cb2245a3a | 112 | pisos[1]=1; |
ProcesadoresESDJ | 8:489cb2245a3a | 113 | } |
ProcesadoresESDJ | 8:489cb2245a3a | 114 | // Si se presiona el botón para ir al tercer piso, la cabina se desplazará al tercer piso |
ProcesadoresESDJ | 8:489cb2245a3a | 115 | if (boton3i.read()==1){ |
ProcesadoresESDJ | 8:489cb2245a3a | 116 | pisos[2]=1; |
ProcesadoresESDJ | 8:489cb2245a3a | 117 | } |
ProcesadoresESDJ | 8:489cb2245a3a | 118 | // Thread::wait(1000.0*0.02); |
ProcesadoresESDJ | 8:489cb2245a3a | 119 | } |
emilmont | 1:0f886ffbe0c1 | 120 | } |
ProcesadoresESDJ | 8:489cb2245a3a | 121 | |
ProcesadoresESDJ | 8:489cb2245a3a | 122 | // Función de lectura de distancia por el SRF05 |
ProcesadoresESDJ | 8:489cb2245a3a | 123 | void sensar(void const *args){ |
ProcesadoresESDJ | 8:489cb2245a3a | 124 | |
ProcesadoresESDJ | 8:489cb2245a3a | 125 | while(1) { |
ProcesadoresESDJ | 8:489cb2245a3a | 126 | |
ProcesadoresESDJ | 8:489cb2245a3a | 127 | distancia=sensor.read(); // Lectura del sensor |
ProcesadoresESDJ | 8:489cb2245a3a | 128 | //Thread::wait(1000.0*0.02); |
ProcesadoresESDJ | 8:489cb2245a3a | 129 | distancia=floor(distancia); |
emilmont | 1:0f886ffbe0c1 | 130 | } |
emilmont | 1:0f886ffbe0c1 | 131 | } |
ProcesadoresESDJ | 8:489cb2245a3a | 132 | void subir(void){ |
ProcesadoresESDJ | 8:489cb2245a3a | 133 | ascender.period_ms(20); |
ProcesadoresESDJ | 8:489cb2245a3a | 134 | bajada.period_ms(20); |
ProcesadoresESDJ | 8:489cb2245a3a | 135 | ascender.pulsewidth_ms(15); |
ProcesadoresESDJ | 8:489cb2245a3a | 136 | bajada.pulsewidth_ms(0); |
ProcesadoresESDJ | 8:489cb2245a3a | 137 | } |
ProcesadoresESDJ | 8:489cb2245a3a | 138 | |
ProcesadoresESDJ | 8:489cb2245a3a | 139 | void bajar(void){ |
ProcesadoresESDJ | 8:489cb2245a3a | 140 | |
ProcesadoresESDJ | 8:489cb2245a3a | 141 | ascender.period_ms(20); |
ProcesadoresESDJ | 8:489cb2245a3a | 142 | bajada.period_ms(20); |
ProcesadoresESDJ | 8:489cb2245a3a | 143 | ascender.pulsewidth_ms(0); |
ProcesadoresESDJ | 8:489cb2245a3a | 144 | bajada.pulsewidth_ms(8); |
ProcesadoresESDJ | 8:489cb2245a3a | 145 | } |
ProcesadoresESDJ | 8:489cb2245a3a | 146 | |
ProcesadoresESDJ | 8:489cb2245a3a | 147 | void parar(void){ |
ProcesadoresESDJ | 8:489cb2245a3a | 148 | ascender.period_ms(20); |
ProcesadoresESDJ | 8:489cb2245a3a | 149 | bajada.period_ms(20); |
ProcesadoresESDJ | 8:489cb2245a3a | 150 | ascender.pulsewidth_ms(0); |
ProcesadoresESDJ | 8:489cb2245a3a | 151 | bajada.pulsewidth_ms(0); |
ProcesadoresESDJ | 8:489cb2245a3a | 152 | } |
ProcesadoresESDJ | 8:489cb2245a3a | 153 | |
ProcesadoresESDJ | 8:489cb2245a3a | 154 | |
ProcesadoresESDJ | 8:489cb2245a3a | 155 | void puertas(void){ |
ProcesadoresESDJ | 8:489cb2245a3a | 156 | |
ProcesadoresESDJ | 8:489cb2245a3a | 157 | // Para el primer piso |
ProcesadoresESDJ | 8:489cb2245a3a | 158 | if(pisos[0]==1){ |
ProcesadoresESDJ | 8:489cb2245a3a | 159 | |
ProcesadoresESDJ | 8:489cb2245a3a | 160 | // Abrir puerta |
ProcesadoresESDJ | 8:489cb2245a3a | 161 | servo1.period(0.025); |
ProcesadoresESDJ | 8:489cb2245a3a | 162 | servo1.pulsewidth(0.0008); |
ProcesadoresESDJ | 8:489cb2245a3a | 163 | wait(5); // Duración apertura |
ProcesadoresESDJ | 8:489cb2245a3a | 164 | // Cerrar puerta |
ProcesadoresESDJ | 8:489cb2245a3a | 165 | servo1.period(0.025); |
ProcesadoresESDJ | 8:489cb2245a3a | 166 | servo1.pulsewidth(0.0008); |
ProcesadoresESDJ | 8:489cb2245a3a | 167 | wait(5); |
ProcesadoresESDJ | 8:489cb2245a3a | 168 | } |
ProcesadoresESDJ | 8:489cb2245a3a | 169 | // Segundo Piso |
ProcesadoresESDJ | 8:489cb2245a3a | 170 | else if(pisos[1]==1){ |
ProcesadoresESDJ | 8:489cb2245a3a | 171 | // Abrir puerta |
ProcesadoresESDJ | 8:489cb2245a3a | 172 | servo2.period(0.025); |
ProcesadoresESDJ | 8:489cb2245a3a | 173 | servo2.pulsewidth(0.0055); |
ProcesadoresESDJ | 8:489cb2245a3a | 174 | wait(5); // Duración apertura |
ProcesadoresESDJ | 8:489cb2245a3a | 175 | // Cerrar puerta |
ProcesadoresESDJ | 8:489cb2245a3a | 176 | servo2.period(0.025); |
ProcesadoresESDJ | 8:489cb2245a3a | 177 | servo2.pulsewidth(0.0008); |
ProcesadoresESDJ | 8:489cb2245a3a | 178 | wait(5); |
ProcesadoresESDJ | 8:489cb2245a3a | 179 | } |
ProcesadoresESDJ | 8:489cb2245a3a | 180 | // Tercer piso |
ProcesadoresESDJ | 8:489cb2245a3a | 181 | else{ |
ProcesadoresESDJ | 8:489cb2245a3a | 182 | // Abrir |
ProcesadoresESDJ | 8:489cb2245a3a | 183 | servo3.period(0.025); |
ProcesadoresESDJ | 8:489cb2245a3a | 184 | servo3.pulsewidth(0.0055); |
ProcesadoresESDJ | 8:489cb2245a3a | 185 | wait(5); // Duración apertura |
ProcesadoresESDJ | 8:489cb2245a3a | 186 | // Cerrar |
ProcesadoresESDJ | 8:489cb2245a3a | 187 | servo3.period(0.025); |
ProcesadoresESDJ | 8:489cb2245a3a | 188 | servo3.pulsewidth(0.0055); |
ProcesadoresESDJ | 8:489cb2245a3a | 189 | wait(5); |
ProcesadoresESDJ | 8:489cb2245a3a | 190 | } |
ProcesadoresESDJ | 8:489cb2245a3a | 191 | } |
ProcesadoresESDJ | 8:489cb2245a3a | 192 | |
ProcesadoresESDJ | 8:489cb2245a3a | 193 | |
ProcesadoresESDJ | 8:489cb2245a3a | 194 | void reinicio(void){ |
ProcesadoresESDJ | 8:489cb2245a3a | 195 | for(i=0;i==3;i++) |
ProcesadoresESDJ | 8:489cb2245a3a | 196 | { |
ProcesadoresESDJ | 8:489cb2245a3a | 197 | botones[i]=0; |
ProcesadoresESDJ | 8:489cb2245a3a | 198 | if(i!=3) |
ProcesadoresESDJ | 8:489cb2245a3a | 199 | pisos[i]=0; |
ProcesadoresESDJ | 8:489cb2245a3a | 200 | |
ProcesadoresESDJ | 8:489cb2245a3a | 201 | } |
emilmont | 1:0f886ffbe0c1 | 202 | } |
ProcesadoresESDJ | 8:489cb2245a3a | 203 | |
ProcesadoresESDJ | 8:489cb2245a3a | 204 | void piso (void const *args) |
ProcesadoresESDJ | 8:489cb2245a3a | 205 | { |
ProcesadoresESDJ | 8:489cb2245a3a | 206 | while(1) |
ProcesadoresESDJ | 8:489cb2245a3a | 207 | { |
ProcesadoresESDJ | 8:489cb2245a3a | 208 | if(botones[0]==1) //Llamado desde el primer piso |
ProcesadoresESDJ | 8:489cb2245a3a | 209 | { |
ProcesadoresESDJ | 8:489cb2245a3a | 210 | if(distancia<dist_p1)//si no esta en el primer piso, baja |
ProcesadoresESDJ | 8:489cb2245a3a | 211 | { |
ProcesadoresESDJ | 8:489cb2245a3a | 212 | bajar(); |
ProcesadoresESDJ | 8:489cb2245a3a | 213 | }else{ |
ProcesadoresESDJ | 8:489cb2245a3a | 214 | parar(); |
ProcesadoresESDJ | 8:489cb2245a3a | 215 | puertas(); |
ProcesadoresESDJ | 8:489cb2245a3a | 216 | botones[0]=0; |
ProcesadoresESDJ | 8:489cb2245a3a | 217 | } |
ProcesadoresESDJ | 8:489cb2245a3a | 218 | }//Fin botones[0] |
ProcesadoresESDJ | 8:489cb2245a3a | 219 | |
ProcesadoresESDJ | 8:489cb2245a3a | 220 | if(botones[1]==1) //Llamado desde el segundo piso para bajar |
ProcesadoresESDJ | 8:489cb2245a3a | 221 | { |
ProcesadoresESDJ | 8:489cb2245a3a | 222 | if(distancia<dist_p2)//si esta en el tercer piso, baja |
ProcesadoresESDJ | 8:489cb2245a3a | 223 | { |
ProcesadoresESDJ | 8:489cb2245a3a | 224 | bajar(); |
ProcesadoresESDJ | 8:489cb2245a3a | 225 | }else if(distancia>dist_p2){// si esta en el primer piso sube |
ProcesadoresESDJ | 8:489cb2245a3a | 226 | subir(); |
ProcesadoresESDJ | 8:489cb2245a3a | 227 | |
ProcesadoresESDJ | 8:489cb2245a3a | 228 | }else{ // en el segundo piso para y baja al primer piso |
ProcesadoresESDJ | 8:489cb2245a3a | 229 | parar(); |
ProcesadoresESDJ | 8:489cb2245a3a | 230 | puertas(); |
ProcesadoresESDJ | 8:489cb2245a3a | 231 | botones[1]=0; |
ProcesadoresESDJ | 8:489cb2245a3a | 232 | botones[0]=1; |
ProcesadoresESDJ | 8:489cb2245a3a | 233 | } |
ProcesadoresESDJ | 8:489cb2245a3a | 234 | }//Fin botones[1] |
ProcesadoresESDJ | 8:489cb2245a3a | 235 | |
ProcesadoresESDJ | 8:489cb2245a3a | 236 | |
ProcesadoresESDJ | 8:489cb2245a3a | 237 | if(botones[2]==1) //Llamado desde el segundo piso para subir |
ProcesadoresESDJ | 8:489cb2245a3a | 238 | { |
ProcesadoresESDJ | 8:489cb2245a3a | 239 | if(distancia<dist_p2)//si esta en el tercer piso, sube |
ProcesadoresESDJ | 8:489cb2245a3a | 240 | { |
ProcesadoresESDJ | 8:489cb2245a3a | 241 | subir(); |
ProcesadoresESDJ | 8:489cb2245a3a | 242 | }else if(distancia>dist_p2){// si esta en el primer piso baja |
ProcesadoresESDJ | 8:489cb2245a3a | 243 | bajar(); |
ProcesadoresESDJ | 8:489cb2245a3a | 244 | |
ProcesadoresESDJ | 8:489cb2245a3a | 245 | }else{ // en el segundo piso para y sube al tercer piso |
ProcesadoresESDJ | 8:489cb2245a3a | 246 | parar(); |
ProcesadoresESDJ | 8:489cb2245a3a | 247 | puertas(); |
ProcesadoresESDJ | 8:489cb2245a3a | 248 | botones[2]=0; |
ProcesadoresESDJ | 8:489cb2245a3a | 249 | botones[3]=1; |
ProcesadoresESDJ | 8:489cb2245a3a | 250 | } |
ProcesadoresESDJ | 8:489cb2245a3a | 251 | }//Fin botones[2] |
ProcesadoresESDJ | 8:489cb2245a3a | 252 | |
ProcesadoresESDJ | 8:489cb2245a3a | 253 | if(botones[3]==1) //Llamado desde el tercer piso |
ProcesadoresESDJ | 8:489cb2245a3a | 254 | { |
ProcesadoresESDJ | 8:489cb2245a3a | 255 | if(distancia>dist_p3)//si no esta en el primer tercer piso sube |
ProcesadoresESDJ | 8:489cb2245a3a | 256 | { |
ProcesadoresESDJ | 8:489cb2245a3a | 257 | subir(); |
ProcesadoresESDJ | 8:489cb2245a3a | 258 | }else{ |
ProcesadoresESDJ | 8:489cb2245a3a | 259 | parar(); |
ProcesadoresESDJ | 8:489cb2245a3a | 260 | puertas(); |
ProcesadoresESDJ | 8:489cb2245a3a | 261 | botones[3]=0; |
ProcesadoresESDJ | 8:489cb2245a3a | 262 | } |
ProcesadoresESDJ | 8:489cb2245a3a | 263 | }//Fin botones[3] |
ProcesadoresESDJ | 8:489cb2245a3a | 264 | |
ProcesadoresESDJ | 8:489cb2245a3a | 265 | if(pisos[0]==1)//Ir al piso 1 |
ProcesadoresESDJ | 8:489cb2245a3a | 266 | { |
ProcesadoresESDJ | 8:489cb2245a3a | 267 | botones[0]=1; |
ProcesadoresESDJ | 8:489cb2245a3a | 268 | pisos[0]=0; |
ProcesadoresESDJ | 8:489cb2245a3a | 269 | }//Fin pisos [0] |
ProcesadoresESDJ | 8:489cb2245a3a | 270 | |
ProcesadoresESDJ | 8:489cb2245a3a | 271 | if(pisos[1]==1)//Ir al piso 2 |
ProcesadoresESDJ | 8:489cb2245a3a | 272 | { |
ProcesadoresESDJ | 8:489cb2245a3a | 273 | if(distancia<dist_p2)//si esta en el tercer piso, sube |
ProcesadoresESDJ | 8:489cb2245a3a | 274 | { |
ProcesadoresESDJ | 8:489cb2245a3a | 275 | subir(); |
ProcesadoresESDJ | 8:489cb2245a3a | 276 | }else if(distancia>dist_p2){// si esta en el primer piso baja |
ProcesadoresESDJ | 8:489cb2245a3a | 277 | bajar(); |
ProcesadoresESDJ | 8:489cb2245a3a | 278 | |
ProcesadoresESDJ | 8:489cb2245a3a | 279 | }else{ // en el segundo piso para y sube al tercer piso |
ProcesadoresESDJ | 8:489cb2245a3a | 280 | parar(); |
ProcesadoresESDJ | 8:489cb2245a3a | 281 | puertas(); |
ProcesadoresESDJ | 8:489cb2245a3a | 282 | pisos[1]=0; |
ProcesadoresESDJ | 8:489cb2245a3a | 283 | } |
ProcesadoresESDJ | 8:489cb2245a3a | 284 | |
ProcesadoresESDJ | 8:489cb2245a3a | 285 | }//Fin pisos[1] |
ProcesadoresESDJ | 8:489cb2245a3a | 286 | |
ProcesadoresESDJ | 8:489cb2245a3a | 287 | if(pisos[2]==1)//Ir al piso 3 |
ProcesadoresESDJ | 8:489cb2245a3a | 288 | { |
ProcesadoresESDJ | 8:489cb2245a3a | 289 | botones[3]=1; |
ProcesadoresESDJ | 8:489cb2245a3a | 290 | pisos[2]=0; |
ProcesadoresESDJ | 8:489cb2245a3a | 291 | }//Fin pisos [2] |
ProcesadoresESDJ | 8:489cb2245a3a | 292 | |
ProcesadoresESDJ | 8:489cb2245a3a | 293 | if(STOP==1) |
ProcesadoresESDJ | 8:489cb2245a3a | 294 | { |
ProcesadoresESDJ | 8:489cb2245a3a | 295 | parar(); |
ProcesadoresESDJ | 8:489cb2245a3a | 296 | reinicio(); |
ProcesadoresESDJ | 8:489cb2245a3a | 297 | }//Fin STOP |
ProcesadoresESDJ | 8:489cb2245a3a | 298 | |
ProcesadoresESDJ | 8:489cb2245a3a | 299 | }//Fin while |
ProcesadoresESDJ | 8:489cb2245a3a | 300 | }//Fin piso |
ProcesadoresESDJ | 8:489cb2245a3a | 301 | |
ProcesadoresESDJ | 8:489cb2245a3a | 302 | int main(void) |
ProcesadoresESDJ | 8:489cb2245a3a | 303 | { |
ProcesadoresESDJ | 8:489cb2245a3a | 304 | |
ProcesadoresESDJ | 8:489cb2245a3a | 305 | parar(); |
ProcesadoresESDJ | 8:489cb2245a3a | 306 | pul.start(callback(pulsadores,(void *)"pulsa")); |
ProcesadoresESDJ | 8:489cb2245a3a | 307 | sen.start(callback(sensar,(void *)"sensor")); |
ProcesadoresESDJ | 8:489cb2245a3a | 308 | pis.start(callback(piso,(void *)"pisos")); |
ProcesadoresESDJ | 8:489cb2245a3a | 309 | |
ProcesadoresESDJ | 8:489cb2245a3a | 310 | }//Fin main |
ProcesadoresESDJ | 8:489cb2245a3a | 311 |