course work

Dependencies:   LinkedList mbed

Files at this revision

API Documentation at this revision

Comitter:
sahabi
Date:
Thu Oct 08 18:25:07 2015 +0000
Parent:
1:28120714ad80
Child:
3:19106c977df1
Commit message:
working, not voltage reading yet.

Changed in this revision

elevator.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/elevator.cpp	Thu Oct 08 17:31:08 2015 +0000
+++ b/elevator.cpp	Thu Oct 08 18:25:07 2015 +0000
@@ -16,56 +16,62 @@
 DigitalOut led2(LED2); 
 DigitalOut led1(LED1); 
 Timeout timeout;
- 
+int first = 0;
 Timer time1;
- 
+int once = 0;
 float stationary = 0.075;
 int closed;
 float ccw = 0.085;   // counter clock-wise
 float cw = 0.065;    // clock-wise
 int reached = 0;
 int location = 1;
-int frequency;
+float frequency;
 int requested_floor;
 int busy = 0;
-
-void startTimer(){ 
-    if(busy == 1){
-    reached = 0;
-    time1.start();
-    }
-}
-
-void serve(){
-
-    if(busy == 1){
-    time1.stop();
+int currentfloor;
 
-    frequency = 1/(time1.read()*2);
-    int floor;
-    if (frequency >= 900 && frequency <= 1100){floor = 5;}
-    else if (frequency >= 700 && frequency <= 800){floor = 4;led4 = !led4;}
-    else if (frequency >= 450 && frequency <= 550){floor = 3;led3 = !led3;}
-    else if (frequency >= 220 && frequency <= 290){floor = 2;led2 = !led2;}
-    else if (frequency >= 70 && frequency <= 150){floor = 1;led1 = !led1;}
+void serve(){ 
+    if(busy == 1){
+        
+    if (first == 0){
+        time1.reset();
+        time1.start();
+        first = 1;
+    }
+        
+    else if (first == 1){
+        time1.stop();
+        first = 0;
+        once++;
+        frequency = 1./time1.read();
+        
+        if (once ==2){
+            once = 0;
+            if (frequency >= 900 && frequency <= 1100){currentfloor = 5;}
+            else if (frequency >= 700 && frequency <= 800){currentfloor = 4;led4 = !led4;}
+            else if (frequency >= 450 && frequency <= 550){currentfloor = 3;led3 = !led3;}
+            else if (frequency >= 220 && frequency <= 290){currentfloor = 2;led2 = !led2;}
+            else if (frequency >= 70 && frequency <= 150){currentfloor = 1;led1 = !led1;}
     
-    if (floor == requested_floor){
-        reached = 1;     
+        if (currentfloor == requested_floor){
+            led1 = 0;
+            led2 = 0;
+            led3 = 0;
+            led4 = 0;
+            in1 = 0;
+            in2 = 0;
+            servo1.write(cw);
+            servo2.write(ccw); 
+            wait(0.33); 
+            servo1.write(stationary);
+            servo2.write(stationary);
+            busy = 0;
+            location = requested_floor;
+            }
+
         }
-        else{
-            reached = 0;
-        }
-    if (reached == 1){
-        in1 = 0;
-        in2 = 0;
-        servo1.write(cw);
-        servo2.write(ccw); 
-        wait(0.33); 
-        servo1.write(stationary);
-        servo2.write(stationary);
-        busy = 0;
-        location = requested_floor;
-        }
+ 
+}
 }
     }
     
@@ -142,8 +148,8 @@
     thirdfloor.rise(&call3); 
     fourthfloor.rise(&call4); 
     fifthfloor.rise(&call5);
-    sensor.rise(&startTimer);
-    sensor.fall(&serve);
+
+    sensor.rise(&serve);
 
     while(1){    
  }