Codigo que funciona

Dependencies:   DebouncedIn Door HCSR04 mbed

Fork of Ascensor by Andrés Felipe Toro Betancur

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");
         }
     }
 
 
-
-