6/8 操舵中央 ピッチ操作追加版

Dependencies:   mbed

Fork of Souda_Main_ver3 by albatross

main.cpp

Committer:
taurin
Date:
2016-02-16
Revision:
2:9dc7d5f1e910
Parent:
1:65a3a2a4f535
Child:
3:0e66ce2ab2fb

File content as of revision 2:9dc7d5f1e910:

//中央can program

#include "mbed.h"
#define WAIT_LOOP_TIME 1
#define YOKUTAN_DATAS_NUM 5
#define IMPUT_DATAS_NUM 2
#define SEND_DATAS_CAN_ID 100

CAN can_R(p9,p10);
CAN can_L(p30,p29);
Serial toKeikiSerial(p28,p27);
Serial pc(USBTX,USBRX);
//DigitalIn eruron_R(p7);
//DigitalIn eruron_L(p7);
int eruron_R = 0;
int eruron_L = 0;
DigitalIn drug_R(p8);
DigitalIn drug_L(p8);
DigitalOut myled1(LED1);
DigitalOut myled2(LED2);

signed char yokutanDatas_R[YOKUTAN_DATAS_NUM];
signed char yokutanDatas_L[YOKUTAN_DATAS_NUM];
char inputDatas_R[IMPUT_DATAS_NUM];
char inputDatas_L[IMPUT_DATAS_NUM];

CANMessage recmsg_R(SEND_DATAS_CAN_ID, inputDatas_R, IMPUT_DATAS_NUM);
CANMessage recmsg_L(SEND_DATAS_CAN_ID, inputDatas_L, IMPUT_DATAS_NUM);

void InputAndSentControlValues_R(){
    inputDatas_R[0] = 1 - inputDatas_R[0];
    inputDatas_R[1] = 1 - inputDatas_R[1];
    //for(int i = 0; i < IMPUT_DATAS_NUM; i++){
        if(can_R.write(recmsg_R)){
            pc.printf("Right successed!\n\r");
        }
    //}
}

void ledcheck_R() {
        myled1 = 1;
        wait(0.2);
        myled1 = 0;
        wait(0.2);
}

void ledcheck_L() {
        myled2 = 1;
        wait(0.2);
        myled2 = 0;
        wait(0.2);
}

void servo_check(){
    int counter = 0;
    counter++;
    if(counter >= 170)
    counter = 0;
    if(counter >= 20){
        eruron_R = 1;
        eruron_L = 1;
    }
    else{
        eruron_R = 0;
        eruron_L = 0;
    }
}

void InputAndSentControlValues_L(){
    inputDatas_L[0] = 1 - inputDatas_L[0];
    inputDatas_L[1] = 1 - inputDatas_L[1];
    //for(int i = 0; i < IMPUT_DATAS_NUM; i++){
        if(can_L.write(recmsg_L)){
            pc.printf("Left successed!\n\r");
        }
    //}
}

void SendDarasToKeiki(){
    for(int i = 0; i < YOKUTAN_DATAS_NUM; i++){
        toKeikiSerial.putc(yokutanDatas_R[i]);
        toKeikiSerial.putc(yokutanDatas_L[i]);
    }
}

void toString_R(){
    for(int i = 0; i < YOKUTAN_DATAS_NUM; i++){
        pc.printf("R : ");
        pc.printf("%i:",yokutanDatas_R[i]);
    }
    for(int i = 0; i < IMPUT_DATAS_NUM; i++){
        pc.printf("%d:%d",i,inputDatas_R[i]);
    }
    pc.printf("\t");
}

void toString_L(){
    for(int i = 0; i < YOKUTAN_DATAS_NUM; i++){
        pc.printf("L : ");
        pc.printf("%i:",yokutanDatas_L[i]);
    }
    pc.printf("\n\r");
}

void init(){
    for(int i = 0; i < IMPUT_DATAS_NUM; i++){
        inputDatas_R[i] = 0;
        inputDatas_L[i] = 0;
    }
}


void receiveDatas(){
    if(can_R.read(recmsg_R)){
        ledcheck_R();
        for(int i = 0; i < recmsg_R.len; i++){
            yokutanDatas_R[i] = recmsg_R.data[i];
        }
    }
     if(can_L.read(recmsg_L)){
        ledcheck_L();
        for(int i = 0; i < recmsg_L.len; i++){
            yokutanDatas_L[i] = recmsg_L.data[i];
        }
    }
}


int main(){
    init();
    while(1){
        //servo_check();
        InputAndSentControlValues_R();
        InputAndSentControlValues_L();
        wait_us(10);
        receiveDatas();
        toString_R();
        toString_L();
        wait(WAIT_LOOP_TIME);
    }
}