Avinash Repaka / Mbed 2 deprecated Lab4_519

Dependencies:   mbed

main.cpp

Committer:
avinashr
Date:
2015-03-26
Revision:
3:c3d716d6c6a7
Parent:
2:2cc70773996b
Child:
4:95fe80130442

File content as of revision 3:c3d716d6c6a7:

#include "mbed.h"
#include "DCMotor.h"
#include "LeftServoMotor.h"
#include "RightServoMotor.h"
#include "Keypad.h"
#include "GlobalObjects.h"
#include "RequestQueue.h"
 
DigitalOut myled(LED1);

void moveForward (){
    dcMotor.forward();
    movingDirection = 1;
}

void moveReverse(){
    dcMotor.reverse();
    movingDirection = -1;
}

void floorChosen (int i){
    queue.add(i);
    if(!dcMotor.isMoving()){
        if(i == currentFloor){  
            floorReached(i);
        }else if(i>currentFloor){
            moveForward();
        }else{
            moveReverse();
        }
    }
}
    
void doStopOperation (){
    dcMotor.stop();
    leftDoor.open();
    rightDoor.open();
    wait(1);
    leftDoor.close();
    rightDoor.close();
} 
 
void floorReached (int i){
    doStopOperation();
    queue.remove(i);
    if(movingDirection == 1){
        if(queue.isForwardRequested(i)){
            moveForward();
        }else if(queue.isReverseRequested(i)){
            moveReverse();
        }else{
            movingDirection = 0;
        }
    }else{
        if(queue.isReverseRequested(i)){
            moveReverse();
        }else if(queue.isForwardRequested(i)){
            moveForward();
        }else{
            movingDirection = 0;
        }
    }
}

void floorDetected (int i){
    currentFloor = i;
    if(queue.isRequested(i))
        floorReached(i);
}

int main() {
    initializeKeypad();
    while(1) {
        //dcMotor.forward();
        leftDoor.open();
        rightDoor.open();
        myled = 1;
        wait(3);
        //dcMotor.stop();
        leftDoor.close();
        rightDoor.close();
        myled = 0;
        wait(3);
    }
}