a

Dependencies:   MotorDriver_SU mbed

Fork of tracer by Naoki Hasegawa

tracer.cpp

Committer:
12f2039e
Date:
2014-10-31
Revision:
2:52a55b50025c
Parent:
1:faa0499314d3

File content as of revision 2:52a55b50025c:

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

// trace L to R
DigitalIn sensor1(P0_16);
DigitalIn sensor2(P0_13);
DigitalIn sensor3(P0_11);
// lift L to R
DigitalIn sensor4(P0_12);
DigitalIn sensor5(P0_14);

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

int main(){
    int height = 0;
    int a = 0;
    while(1){
        while(a == 0){
        //patern1
            if(sensor1 == 1 && sensor2 == 1 && sensor3 == 0){
                motor.Drive(0, CW, 0); //右タイヤ
                motor.Drive(1, CW, 2000);//左タイヤ
                }
        //patern2
            else if(sensor1 == 1 && sensor2 == 0 && sensor3 == 1){
                motor.Drive(0, CW, 1000);
                motor.Drive(1, CW, 1000);
                }
        //patern3
            else if(sensor1 == 0 && sensor2 == 1 && sensor3 == 1){
                motor.Drive(0, CW, 2000);
                motor.Drive(1, CW, 0);
                }
        //patern4
            else if(sensor1 == 0 && sensor2 == 0 && sensor3 == 1){
                motor.Drive(0, CW, 0);
                motor.Drive(1, CW, 1500);
                }
        //patern5
        else if(sensor1 == 1 && sensor2 == 0 && sensor3 == 0){
            motor.Drive(0, CW, 1500);
            motor.Drive(1, CW, 0);
            }
        //patern6
            else if(sensor1 == 0 && sensor2 == 0 && sensor3 == 0){
                motor.Drive(0, CW, 1000);
                motor.Drive(1, CW, 1000);
                }
        
        //patern7
            else if(sensor1 == 0 && sensor2 == 1 && sensor3 == 0){
                motor.Drive(0, CW, 1000);
                motor.Drive(1, CW, 1000);
                }
        
        //patern8 探索回転方向
        //ラインの右側に出た場合 反時計回り
            /*else if(sensor1 == 1 && sensor2 == 1 && sensor3 == 1){
                    motor.Drive(0, CW, 2048);
                    motor.Drive(1, STOP, 0);
                    }*/
        //ラインの左側に出た場合 時計回り
            else if(sensor1 == 1 && sensor2 == 1 && sensor3 == 1 ){
                    motor.Drive(0, STOP, 0);
                    motor.Drive(1, CW, 1500);
                    }
            
        //リフト判定
        else if(sensor4 == 0 && sensor5 == 0, height == 0){
                    //ストップ
                    motor.Drive(0, STOP, 0);
                    motor.Drive(1, STOP, 0);
            
                    lift.Drive(0, CW, 2000); //リフトアップ
                    wait(4);
                    lift.Drive(0, STOP, 0);
                    height = 1;
                    wait(1); //lift位置
                     //再スタート
                    motor.Drive(0, CW, 1500);
                    motor.Drive(1, CW, 1500);
                    }
            else if(sensor4 == 0 && sensor5 == 0, height == 1){
                    motor.Drive(0, STOP, 0);
                    motor.Drive(1, STOP, 0);
            
                    lift.Drive(0, CCW, 2000);//リフトダウン
                    wait(4);
                    lift.Drive(0, STOP, 0);
                    
                    height = 0;
                    a = 1;// スルー判定
                    }
            
            else{
                motor.Drive(0, CW, 1000);
                motor.Drive(1, CW, 1000);
                }
        }
        //back 
        while( a == 1){
                    motor.Drive(0, CCW, 3000);
                    motor.Drive(1, CCW, 3000);
                    }
            
    }
    
}