Codigo que funciona
Dependencies: DebouncedIn Door HCSR04 mbed
Fork of Ascensor by
Diff: main.cpp
- Revision:
- 1:27e51c864014
- Parent:
- 0:4f72e674f36d
--- a/main.cpp Thu Jun 07 18:53:31 2018 +0000 +++ b/main.cpp Thu Jun 07 21:25:25 2018 +0000 @@ -37,18 +37,21 @@ int sensordist(void); void comp(int dmeasured); +int Piso_trans; +int Piso_act; + int main(){ - sonar.reset(); - sonar.start(); + sonar.reset(); // Se resetea el temporizador + sonar.start(); // Se inicia el temporizador while(Echo == 2){}; myled=0; sonar.stop(); - correction = sonar.read_us(); + correction = sonar.read_us(); // Se halla el factor de corrección while(true){ - int d = sensordist(); - comp(d); + int d = sensordist(); // Lectura del sensor de ultrasonido + comp(d); // Entrego el valor del piso actual wait_ms(50); while((B_p2u == 0)){ @@ -56,61 +59,52 @@ Motor_up = 1; Motor_down = 0; Motor_en.period_ms(50); - Motor_en.pulsewidth_us(4000); + Motor_en.pulsewidth_us(3500); } while((B_p2d == 0)){ pc.printf("d"); Motor_up = 0; Motor_down = 1; Motor_en.period_ms(50); - Motor_en.pulsewidth_us(1000); + Motor_en.pulsewidth_us(150); } if ((B_p2u == 1) && (B_p2d == 1)){ pc.printf("p"); Motor_up = 0; Motor_down = 0; - } - - wait_ms(500); + } - /*if((B_p1 == 0) || (B_c1 == 0)){ - pc.printf("1"); - wait(1); - pc.printf("u"); - - + if (Piso_act==1){ + if(B_open == 0){ // Si presiono el boton de apertura + S_1.period_ms(30) ; + S_1.pulsewidth_us(2300); + } + if(B_close == 0){ // Si presiono el boton de apertura + S_1.period_ms(30) ; + S_1.pulsewidth_us(600); } - if((B_p2d == 0) || (B_c2 == 0) || (B_p2u == 0)){ - pc.printf("2"); - wait(1); - pc.printf("p"); - + } + if (Piso_act==3){ + if(B_open == 0){ // Si presiono el boton de apertura + S_3.period_ms(30) ; + S_3.pulsewidth_us(2300); + } + if(B_close == 0){ // Si presiono el boton de apertura + S_3.period_ms(30) ; + S_3.pulsewidth_us(600); + } + } + + if(B_p1 == 0){ + while(Piso_act!=1){ } - if((B_p3 == 0) || (B_c3 == 0)){ - pc.printf("3"); - wait(1); - pc.printf("d"); - - - } - if((B_open == 0)){ - pc.printf("4"); - wait(1); - } - if((B_close == 0)){ - pc.printf("5"); - wait(1); - } - if((B_stop == 0)){ - pc.printf("6"); - wait(1); - - } - */ } - - + + + wait_ms(300); + + } } @@ -133,11 +127,15 @@ return distance; } -void comp(int dmeasured){ - if((dmeasured <= 5)){ - pc.printf("9"); +void comp(int dmeasured){ // Comparación de distancia para determinar piso actual + if((dmeasured <= 20)){ + pc.printf("3"); + Piso_trans=3; + if (dmeasured <= 6){ + Piso_act=3; + } } - else if ((dmeasured > 5 && dmeasured <= 10)){ + /*else if ((dmeasured > 5 && dmeasured <= 10)){ pc.printf("8"); } else if ((dmeasured > 10 && dmeasured <= 15)){ @@ -148,24 +146,30 @@ } else if ((dmeasured > 20 && dmeasured <= 25)){ pc.printf("5"); + }*/ + else if ((dmeasured > 20 && dmeasured <= 35)){ + pc.printf("2"); + Piso_trans=2; + if ((dmeasured > 25 && dmeasured <= 27)){ + Piso_act=2; + } } - else if ((dmeasured > 25 && dmeasured <= 30)){ - pc.printf("4"); - } - else if ((dmeasured > 30 && dmeasured <= 35)){ + /*else if ((dmeasured > 30 && dmeasured <= 35)){ pc.printf("3"); } else if ((dmeasured > 35 && dmeasured <= 40)){ pc.printf("2"); - } - else if ((dmeasured > 40 && dmeasured <= 46)){ + }*/ + else if ((dmeasured > 35){ pc.printf("1"); - } + Piso_trans=1; + if ((dmeasured > 45)){ + Piso_act=1; + } + } else{ pc.printf("0"); } } - -