a

Dependencies:   MotorDriver_SU mbed

line8.cpp

Committer:
12f2025e
Date:
2014-11-28
Revision:
0:ac03a5309047

File content as of revision 0:ac03a5309047:

#include "mbed.h"
#include "MotorDriver_SU.h"

DigitalIn   sw(P0_1, PullUp);
DigitalIn   rightline(P0_12);
DigitalIn   leftline(P0_14);
DigitalIn   rightlift(P0_22);
DigitalIn   leftlift(P0_23);
DigitalOut  led1(P1_20);  //left
DigitalOut  led2(P1_27);
DigitalOut  led3(P1_21);
DigitalOut  led4(P1_26);  //right

MotorDriver_SU motor(MOTOR_DOUBLE);
MotorDriver_SU lift(MOTOR_SINGLE);

int a = 0;
int b = 0;
int c = 0;

int main(){
    while(1){
        while(sw == 0){
            motor.Drive(0, STOP, 0);                     
            motor.Drive(1, STOP, 0);               
            lift.Drive(0, STOP, 0);
        }
        while(sw == 1){
            if((rightline == 0 && leftline == 1) && (rightlift == 1 && leftlift == 1)){    //WWBW
                motor.Drive(0, CW, 2200);                     
                motor.Drive(1, CW, 2200);               
                lift.Drive(0, STOP, 0);
                led1 = 0;
                led2 = 0;
                led3 = 1;
                led4 = 0;
            }
            
            else if((rightline == 0 && leftline == 0) && (rightlift == 0 && leftlift == 0)){ //BBBB
               if(a == 0){
                    led1 = 1;
                    led2 = 1;
                    led3 = 1;
                    led4 = 1;
                    motor.Drive(0, CW, 2000);       //0 = rightmotor, 1 = leftmotor              
                    motor.Drive(1, CW, 2000);               
                    lift.Drive(0, CCW, 4095);
                    wait(1.5);
                    lift.Drive(0, STOP, 0);
                    a = 1;
                }
                else{
                    led1 = 1;
                    led2 = 1;
                    led3 = 1;
                    led4 = 1;
                    motor.Drive(0, STOP, 0); 
                    motor.Drive(1, STOP, 0);               
                    lift.Drive(0, CW, 4095);
                    wait(1.5);
                    lift.Drive(0, STOP, 0);
                    motor.Drive(0, CCW, 4095); 
                    motor.Drive(1, CCW, 4095);
                    wait(1);
                }
            }
            else if((rightline == 0 && leftline == 0) && (rightlift == 1 && leftlift == 0)){    //BBBW
                if(c == 0){
                    led1 = 1;
                    led2 = 1;
                    led3 = 1;
                    led4 = 0;
                    motor.Drive(0, CW, 1000);
                    motor.Drive(1, CW, 1000);
                    wait(0.7);
                    motor.Drive(0, CW, 1000);
                    motor.Drive(1, CCW, 1000);
                    wait(0.1);
                    c = 1; 
                }
                else{
                    motor.Drive(0, CW, 2200);                     
                    motor.Drive(1, STOP, 0);               
                    lift.Drive(0, STOP, 0);
                    led1 = 1;
                    led2 = 1;
                    led3 = 1;
                    led4 = 0;
                }
            }
            else if((rightline == 0 && leftline == 0) && (rightlift == 0 && leftlift == 1)){    //WBBB
                if(b == 0){
                    led1 = 0;
                    led2 = 1;
                    led3 = 1;
                    led4 = 1;
                    motor.Drive(0, CW, 1000);
                    motor.Drive(1, CW, 1000);
                    wait(1);
                    motor.Drive(0, CCW, 1000);
                    motor.Drive(1, CW, 1000);
                    wait(0.5);
                    b = 1; 
                }
                else{    
                    motor.Drive(0, STOP, 0);                     
                    motor.Drive(1, CW, 2200);               
                    lift.Drive(0, STOP, 0);
                    led1 = 0;
                    led2 = 1;
                    led3 = 1;
                    led4 = 1;
                }
            }
            else if((rightline == 0 && leftline == 0) && (rightlift == 1 && leftlift == 1)){    //WBBW  *
                motor.Drive(0, CW, 2200);                     
                motor.Drive(1, CW, 1100);               
                lift.Drive(0, STOP, 0);
                led1 = 0;
                led2 = 1;
                led3 = 1;
                led4 = 0;
            }
            
            else if((rightline == 1 && leftline == 1) && (rightlift == 1 && leftlift == 0)){    //BWWW  *
                if(c == 0){
                    led1 = 1;
                    led2 = 0;
                    led3 = 0;
                    led4 = 0;
                    motor.Drive(0, CW, 1000);
                    motor.Drive(1, CW, 1000);
                    wait(0.7);
                    motor.Drive(0, CW, 1000);
                    motor.Drive(1, CCW, 1000);
                    wait(0.1);
                    motor.Drive(0, CW, 1000);
                    motor.Drive(1, CW, 1000);
                    wait(0.3);
                    c = 1; 
                }
                else{    
                    motor.Drive(0, CW, 1500);                     
                    motor.Drive(1, CW, 1000);               
                    lift.Drive(0, STOP, 0);
                    led1 = 1;
                    led2 = 0;
                    led3 = 0;
                    led4 = 0;
                }
            }
            else if((rightline == 1 && leftline == 1) && (rightlift == 0 && leftlift == 1)){    //WWWB
                if(b == 0){
                    led1 = 0;
                    led2 = 0; 
                    led3 = 0;
                    led4 = 1;
                    motor.Drive(0, CW, 1000);
                    motor.Drive(1, CW, 1000);
                    wait(1);
                    motor.Drive(0, CCW, 1000);
                    motor.Drive(1, CW, 1000);
                    wait(0.5);
                    b = 1; 
                }
                else{    
                    motor.Drive(0, CW, 500);                     
                    motor.Drive(1, CW, 1500);               
                    lift.Drive(0, STOP, 0);
                    led1 = 0;
                    led2 = 0; 
                    led3 = 0;
                    led4 = 1;
                }
            }
            else if((rightline == 1 && leftline == 1) && (rightlift == 1 && leftlift == 1)){    //WWWW
                motor.Drive(0, CCW, 650);                     
                motor.Drive(1, CW, 1500);               
                lift.Drive(0, STOP, 0);
                led1 = 0;
                led2 = 0;
                led3 = 0;
                led4 = 0;
            }
        
            else if((rightline == 0 && leftline == 1) && (rightlift == 0 && leftlift == 0)){    //BWBB
                 if(a == 0){
                    led1 = 1;
                    led2 = 0;
                    led3 = 1;
                    led4 = 1;
                    motor.Drive(0, CW, 2000);
                    motor.Drive(1, CW, 2000);               
                    lift.Drive(0, CCW, 4095);
                    wait(1.5);
                    lift.Drive(0, STOP, 0);
                    a = 1;
                }
                else{
                    led1 = 1;
                    led2 = 0;
                    led3 = 1;
                    led4 = 1;
                    motor.Drive(0, STOP, 0); 
                    motor.Drive(1, STOP, 0);               
                    lift.Drive(0, CW, 4095);
                    wait(1.5);
                    lift.Drive(0, STOP, 0);
                    motor.Drive(0, CCW, 4095); 
                    motor.Drive(1, CCW, 4095);
                    wait(1);
                }
            }
            else if((rightline == 0 && leftline == 1) && (rightlift == 1 && leftlift == 0)){    //BWBW
                if(c == 0){
                    led1 = 1;
                    led2 = 0;
                    led3 = 1;
                    led4 = 0;
                    motor.Drive(0, CW, 1000);
                    motor.Drive(1, CW, 1000);
                    wait(0.7);
                    motor.Drive(0, CW, 1000);
                    motor.Drive(1, CCW, 1000);
                    wait(0.1);
                    c = 1; 
                }
                else{    
                    motor.Drive(0, CW, 2200);                     
                    motor.Drive(1, STOP, 0);               
                    lift.Drive(0, STOP, 0);
                    led1 = 1;
                    led2 = 0;
                    led3 = 1;
                    led4 = 0;
                }
            }
            else if((rightline == 0 && leftline == 1) && (rightlift == 0 && leftlift == 1)){    //WWBB
                if(b == 0){
                    led1 = 0;
                    led2 = 0;
                    led3 = 1;
                    led4 = 1;
                    motor.Drive(0, CW, 1000);
                    motor.Drive(1, CW, 1000);
                    wait(1);
                    motor.Drive(0, CCW, 1000);
                    motor.Drive(1, CW, 1000);
                    wait(0.5);
                    b = 1; 
                }
                else{    
                    motor.Drive(0, CW, 1000);                     
                    motor.Drive(1, CW, 1500);               
                    lift.Drive(0, STOP, 0);
                    led1 = 0;
                    led2 = 0;
                    led3 = 1;
                    led4 = 1;
                }
            }
            
            else if((rightline == 1 && leftline == 0) && (rightlift == 0 && leftlift == 0)){    //BBWB
                if(a == 0){
                    led1 = 1;
                    led2 = 1;
                    led3 = 0;
                    led4 = 1;
                    motor.Drive(0, CW, 2000);
                    motor.Drive(1, CW, 2000);               
                    lift.Drive(0, CCW, 4095);
                    wait(1.5);
                    lift.Drive(0, STOP, 0);
                    a = 1;
                }
                else{
                    led1 = 1;
                    led2 = 1;
                    led3 = 0;
                    led4 = 1;
                    motor.Drive(0, STOP, 0); 
                    motor.Drive(1, STOP, 0);               
                    lift.Drive(0, CW, 4095);
                    wait(1.5);
                    lift.Drive(0, STOP, 0);
                    motor.Drive(0, CCW, 4095); 
                    motor.Drive(1, CCW, 4095);
                    wait(1);
                }
            }
            else if((rightline == 1 && leftline == 0) && (rightlift == 1 && leftlift == 0)){    //BBWW
                if(c == 0){
                    led1 = 1;
                    led2 = 1;
                    led3 = 0;
                    led4 = 0;
                    motor.Drive(0, CW, 1000);
                    motor.Drive(1, CW, 1000);
                    wait(0.7);
                    motor.Drive(0, CW, 1000);
                    motor.Drive(1, CCW, 1000);
                    wait(0.1);
                    c = 1; 
                }
                else{    
                    motor.Drive(0, CW, 2200);                     
                    motor.Drive(1, STOP, 0);               
                    lift.Drive(0, STOP, 0);
                    led1 = 1;
                    led2 = 1;
                    led3 = 0;
                    led4 = 0;
                }
            }
            else if((rightline == 1 && leftline == 0) && (rightlift == 0 && leftlift == 1)){  //WBWB
                if(b == 0){
                    led1 = 0;
                    led2 = 1;
                    led3 = 0;
                    led4 = 1;
                    motor.Drive(0, CW, 1000);
                    motor.Drive(1, CW, 1000);
                    wait(1);
                    motor.Drive(0, CCW, 1000);
                    motor.Drive(1, CW, 1000);
                    wait(0.5);
                    b = 1; 
                }
                else{    
                    motor.Drive(0, STOP, 0);                     
                    motor.Drive(1, CW, 2200);               
                    lift.Drive(0, STOP, 0);
                    led1 = 0;
                    led2 = 1;
                    led3 = 0;
                    led4 = 1;
                }
            }
            else{                                    //WBWW
                motor.Drive(0, CW, 2200);                     
                motor.Drive(1, CW, 1000);               
                lift.Drive(0, STOP, 0);
                led1 = 0;
                led2 = 1;
                led3 = 0;
                led4 = 0;
            }
        }
    }
}