Mohammed Alshiekh
/
elevator_with_queue
course work
Diff: elevator.cpp
- Revision:
- 2:07f2fe858dbd
- Parent:
- 1:28120714ad80
- Child:
- 3:19106c977df1
--- 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){ }