使用するMotorDriverは，CAN通信を使ってコントロールします．
使い方について簡単に説明していきます．

・使用する関数
    void motordriverTransmitMessage(CAN *can,int id,int command,float data = 0.0f,bool option = false);
    【引数】
        第１引数: *can      CANのアドレスを引数に取ります
        第２引数: id        MDのロータリースイッチで設定したIDを引数に取ります
                                (ex)スイッチを0に設定した場合 → MD_0_MCU
                                        　　 Fに設定した場合 → MD_15_MCU
        第３引数:　command  送信するメッセージのカテゴリーを引数に取ります
                                (ex)速度PIDのPゲインを送信する場合      →　md_can_flame::SEND_KP
                                    速度PIDのIゲインを送信する場合      →　md_can_flame::SEND_KI
                                    速度PIDのDゲインを送信する場合      →　md_can_flame::SEND_KD
                                    Duty比を送信する場合　　　　　      →　md_can_flame::SEND_CONTROL_DUTY
                                    回転数を送信する場合　　     　     →　md_can_flame::SEND_CONTROL_RPM
                                    MDをRESETする場合                →  md_can_flame::REQUEST_RESET_MCU
                                    printf出力をデバック状態にする場合  →  md_can_flame::REQUEST_PRINTF_DEBAG (標準状態)
                                    printf出力をCSV出力状態にする場合  →  md_can_flame::REQUEST_PRINTF_FORMAT_CSV
        第４引数: data      送信するメッセージのdataを引数に取ります(値を送信しない時は，省略可)
                                (ex)Duty比を送信する場合　　　　　　　　 →　-1.0f ~ 0.0f ~ 1.0f, の範囲
                                　  回転数を送信する場合               →　任意の回転数の値(float型)
                                    速度PIDのPゲインを送信する場合      →　任意のKpの値
                                    速度PIDのIゲインを送信する場合      →　任意のKiの値
                                    速度PIDのDゲインを送信する場合      →　任意のKdの値
        第５引数: option    送信するメッセージのoptionデータを引数に取ります(送信しない場合は，省略可)
                        　 速度制御をかける場合のみ，駆動電源の状態をフィードバックしてください．
                                (ex)駆動電源の状態をフィードバック　　　　→ 〇〇〇.read()  //DigitalIn 〇〇〇
    【戻り値】
        なし


                                　　
・使用例
//Duty比で制御する場合
    ①Duty比0.8fを，IDを0と設定したMDに送信する
        /********************************
        CAN can(CAN_RD,CAN_TD);   //適切に変更すること
        Ticker controlCycle;
        
        int main() {
            can.frequency(500000);
            controlCycle.attach(&mainLoop,0.01f);
            while(1) { 
            }
        }
        
        void mainLoop() {
            motordriverTransmitMessage(&can,MD_0_MCU,md_can_flame::SEND_CONTROL_DUTY,0.8f);
        }
        /********************************

//速度制御をかける場合
    ②回転数:100[r/min]を，IDを0と設定したMDに送信する
        /********************************
        CAN can(CAN_RD,CAN_TD);   //適切に変更すること
        DigitalIn sw(〇〇〇)       //適切に変更すること
        Ticker controlCycle;
        
        int main() {
            can.frequency(500000);
            controlCycle.attach(&mainLoop,0.01f);
            while(1) { 
            }
        }
        
        void mainLoop() {
            motordriverTransmitMessage(&can,MD_0_MCU,md_can_flame::SEND_CONTROL_RPM,100.0f,sw.read());　　//第5引数は，駆動電源の状態を読み取って，結果を引数にとっています
        }
        /********************************
    
    ③MDのIDを1~4と設定したMDに速度制御のパラメータを送信する
        /********************************
        CAN can(CAN_RD,CAN_TD);   //適切に変更すること
        Ticker controlCycle;
        
        //予めパラメータを定義
    　　 float SPEED_PID_GAIN[4][3] = {
            {0.0f,0.0f,0.0f},       //モーター１のKp,Ki,Kd
            {0.0f,0.0f,0.0f},       //モーター２のKp,Ki,Kd
            {0.0f,0.0f,0.0f},       //モーター３のKp,Ki,Kd
            {0.0f,0.0f,0.0f},       //モーター４のKp,Ki,Kd
        };
        
        int main() {
            can.frequency(500000);
            //送信コード(IDが1~4のMDへ順番にパラメータを送信　(Kp→Ki→Kd))
            for(int i=0;i<4;i++) {
                for(int j=0;j<3;j++) {
                    motordriverTransmitMessage(&can,MD_1_MCU+i,md_can_flame::SEND_KP +j,SPEED_PID_GAIN[i][j]);
                    wait_ms(10);
                }
            }
            
            controlCycle.attach(&mainLoop,0.01f);
            while(1) { 
            }
        }
        
        void mainLoop() {

        }
        /********************************
        
//シリアル出力の形式を変更する
シリアル出力の形式は以下の2通りあります．
①default:各種情報を出力します．
    SWITCH:0    CAN_ID:10   DUTY:0.00   RPM:0.00    TIME:0.016171
    (各情報について)
        SWITCH  :ロータリースイッチがいくつに設定されているか
        CAN_ID  :MDのCAN通信におけるID
        DUTY    :出力しているDuty比
        RPM     :現在の回転数
        TIME    :最後に制御情報を受信してからの時間(一定時間経過すると，安全のために出力が徐々に落ちるようになっています)

②option:速度制御の調整をする際に，必要な情報のみを出力します．
    100,90,0.8
    (各情報について)
        １つ目の数字  :目標回転速度
        ２つ目の数字  :現在の回転速度
        ３つ目の数字  :現在のDuty比
        
それぞれの切り替え方 それぞれのコードを参考にコマンドを1度送ってください．
    ①→②への切り替え方  ex) motordriverTransmitMessage(&can,MD_1_MCU,md_can_flame::REQUEST_PRINTF_FORMAT_CSV);      //こっちをよく使う
    ②→①への切り替え方  ex) motordriverTransmitMessage(&can,MD_1_MCU,md_can_flame::REQUEST_PRINTF_DEBAG);
