使用する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() {

        }
        /********************************