広大 目黑 / Mbed 2 deprecated src2019

Dependencies:   mbed

main.cpp

Committer:
megu29
Date:
2019-09-13
Revision:
0:d14e21c64226
Child:
1:8a67adccebd9

File content as of revision 0:d14e21c64226:

#include "mbed.h"
#include "main.h"
#include "moterdrive.h"
#include "DualShockMod.h"

#define PERIOD 100

DigitalOut  my_led(LED1);
PwmOut      md1_pwm1(PB_2);
DigitalOut  md1_cw1(PB_12);
DigitalOut  md1_ccw1(PB_1);
DigitalOut  md1_dis1(PA_11);

PwmOut      md1_pwm2(PB_15);
DigitalOut  md1_cw2(PA_12);
DigitalOut  md1_ccw2(PB_14);
DigitalOut  md1_dis2(PB_13);

PwmOut      md2_pwm1(PC_7);
DigitalOut  md2_cw1(PA_8);
DigitalOut  md2_ccw1(PA_3);
DigitalOut  md2_dis1(PB_10);

PwmOut      md2_pwm2(PB_3);
DigitalOut  md2_cw2(PB_4);
DigitalOut  md2_ccw2(PA_10);
DigitalOut  md2_dis2(PB_5);

DigitalIn   Limit1(PC_9);
DigitalIn   Limit2(PC_8);
DigitalIn   Limit3(PC_6);
DigitalIn   Limit4(PC_5);

DigitalIn   photo1(PA_6);
DigitalIn   photo2(PA_7);
DigitalIn   photo3(PB_6); 

//serial通信
Serial pc(SERIAL_TX, SERIAL_RX);
Serial tsuushin(PC_10,PC_11);  


/*プロトタイプ宣言*/
void moter(int num, char dir, float power);


Timer timer;

int main(){
    double posX = 0;
    double posY = 0;
    
    typedef enum{
        WAIT,
        HARI1,
        HARI2,
        HARI3,
        SYM1,
        END   
    }SEQENCE;
    SEQENCE seq = WAIT;

    typedef enum{
        STOP,
        FFAST,
        FSLOW,
        RIGHT,
        LEFT,
        RROLL,
        LROLL,
        BACK 
    }MOVEDIR;
    MOVEDIR move = STOP;

    //エンコーダーの値
    pc.printf("posX=%d,posY=%d\n\r",posX,posY);
    uint8_t InitDS(Serial* f_serial);
    void getPOSdata(void);
    tsuushin.baud(115200);    
    InitDS(&tsuushin);
    tsuushin.attach(&getPOSdata, Serial::RxIrq); //受信したら割り込み開始           

    
    timer.start();
    while(1){
//代入部
//        posX = ;
//        posY = ;     

        switch(seq){
            case WAIT:
            if(timer.read_ms() > 3000){
                seq = HARI1;
                timer.reset();
                }    
            break;
            case HARI1:
                move = FFAST;
                
            break;
            
            }
            
            
        switch(move){
            case STOP:
                moter(0,STOP,0);
                moter(1,STOP,0);
                moter(2,STOP,0);
            break;
            case FFAST:
                moter(0,STOP,0);
                moter(1,cw,1);
                moter(2,ccw,1);
            break;
            case FSLOW:
                moter(0,STOP,0);
                moter(1,cw,0.5);
                moter(2,ccw,0.5);
            break;
            case BACK:
                moter(0,STOP,0);
                moter(1,ccw,1);
                moter(2,cw,1);
            break;
            case RROLL:
                moter(0,ccw,0.3);
                moter(1,ccw,0.3);
                moter(2,ccw,0.3);
            break;
            case LROLL:
                moter(0,cw,0.3);
                moter(1,cw,0.3);
                moter(2,cw,0.3);
            break;
            case RIGHT:
                moter(0,cw,1);
                moter(1,ccw,0.5);
                moter(2,ccw,0.5);
            break;
            case LEFT:
                moter(0,ccw,1);
                moter(1,cw,0.5);
                moter(2,cw,0.5);
            break;
            
        }




         }    
}



void moter(int num, char dir, float power){
    
    int output;
    if(num == 0){
        if(dir == cw){
            md1_cw1 = 1;
            md1_ccw1 = 0;
            }
            else if(dir == ccw){
            md1_cw1 = 0;
            md1_ccw1 = 1;
            }
            else if(dir == STOP){
            md1_cw1 = 0;
            md1_ccw1 = 0;
            }
        output = PERIOD * power ;
        md1_pwm1.pulsewidth_ms(output);
        } 
        if(num == 1){
            if(dir == cw){
            md1_cw2 = 1;
            md1_ccw2 = 0;
            }
            else if(dir == ccw){
            md1_cw2 = 0;
            md1_ccw2 = 1;
            }
            else if(dir == STOP){
            md1_cw2 = 0;
            md1_ccw2 = 0;
            }
        output = PERIOD * power ;
        md1_pwm2.pulsewidth_ms(output);
        } 
        if(num == 2){
            if(dir == cw){
            md2_cw1 = 1;
            md2_ccw1 = 0;
            }
            else if(dir == ccw){
            md2_cw1 = 0;
            md2_ccw1 = 1;
            }
            else if(dir == STOP){
            md2_cw1 = 0;
            md2_ccw1 = 0;
            }
        output = PERIOD * power ;
        md2_pwm1.pulsewidth_ms(output);
        }
        if(num == 3){
            if(dir == cw){
            md2_cw2 = 1;
            md2_ccw2 = 0;
            }
            else if(dir == ccw){
            md2_cw2 = 0;
            md2_ccw2 = 1;
            }
            else if(dir == STOP){
            md2_cw2 = 0;
            md2_ccw2 = 0;
            }
        output = PERIOD * power ;
        md2_pwm2.pulsewidth_ms(output);
        }
     
    
    
    
    }