2016/05/06 交ロボの移植プログラム 移動only

Dependencies:   mbed

Revision:
2:3bf43044ef9f
Parent:
1:4f5a22371fff
--- a/main.cpp	Fri May 06 07:49:34 2016 +0000
+++ b/main.cpp	Fri May 06 09:13:54 2016 +0000
@@ -22,7 +22,7 @@
         i++;
     }
 }
-
+//今は使ってない受信関数
 void getConData(){
     int i=0;
     if(FEP02.getc()==255){
@@ -34,42 +34,47 @@
     }
     //pc.printf("Recieved\r\n");
 }
-
+//モーターの出力を計算する関数
 void MotorOut(char MDFL[],char MDFR[],char MDRL[],char MDRR[]){
     int dig;
     double rad,turn;
     double prePwmDuty[4],PwmDuty[4];
     int i=0,n=0;
-    
+    //受信データから元の角度に変換
     dig = data[0]+data[1]*128;
+    //radianに変換
     rad = (dig/180.0)*PI;
+    //角度が360°の時モーター出力0
     if(dig==360){
         while(n<4){
             prePwmDuty[n]=0;
             n++;
         }
     }else{
+        //各モータへの出力を算出
         prePwmDuty[0]=1.41421356*sin(rad+qPI);//*conratio;
         prePwmDuty[1]=1.41421356*sin(rad-qPI);//*conratio;
         prePwmDuty[2]=prePwmDuty[1];
         prePwmDuty[3]=prePwmDuty[0];
     }
-    
+    //車体の回転のスピードを算出
     turn = (data[2]-63)/64.0;
     //turn = 0;
-    
+    //各モーターに回転量を上乗せ
     prePwmDuty[0]+=turn;//*conratio;//*ratio;
     prePwmDuty[1]-=turn;//*conratio;//*ratio;
     prePwmDuty[2]+=turn;//*conratio;//*ratio;
     prePwmDuty[3]-=turn;//*conratio;//*ratio;
     
     while(i<4){
+        //値を-1.0~1.0の範囲だからその範囲に収める
         if(prePwmDuty[i]<-1.0) prePwmDuty[i]=-1.0;
         else if(prePwmDuty[i]>1.0) prePwmDuty[i]=1.0;
+        //値を0~1.0の範囲に変換
         PwmDuty[i]=(fabs(prePwmDuty[i]+1.0))/2;
         i++;
     }
-    
+    //送信できるデータは1byteだからその範囲に変換
     MDFL[0] = PwmDuty[0]*255;
     MDFR[0] = PwmDuty[1]*255;
     MDRL[0] = PwmDuty[2]*255;
@@ -100,14 +105,16 @@
     char MDFL[2],MDFR[2],MDRL[2],MDRR[2];
     int i2cVAL=0;
     int i=0;
-    
+    //I2Cの通信速度設定
     i2c.frequency(300000);
     ledsReset();
+    //シリアルのボーレートを19200に設定
     FEP02.baud(19200);
     /*
     MotorRun();
     wait(3);
     */
+    //モータの出力をリセット
     MotorReset();
     //FEP02.attach(&getConData);
     leds[0]=1;
@@ -116,13 +123,15 @@
     while(1) {
         i2cVAL=0;
         i=0;
+        //FEP-02の受信シーケンス
         if(FEP02.getc()==255){
             while(i<5){
                 data[i]=FEP02.getc();
                 i++;
             }
+            //モータへの出力を算出する関数へ飛ぶ
             MotorOut(MDFL,MDFR,MDRL,MDRR);
-            
+            //各ドライバへI2Cラインを用いてデータ送信
             i2cVAL += i2c.write(addr[0],MDFL,2,false);
             i2cVAL += i2c.write(addr[1],MDFR,2,false);
             i2cVAL += i2c.write(addr[2],MDRL,2,false);
@@ -132,6 +141,7 @@
             printf("%d,%d,%d,%d\r\n",MDFL[0],MDFR[0],MDRL[0],MDRR[0]);
             leds[0]=!leds[0];
             leds[1]=1;
+            //LEDが光ったらI2Cラインでミスが発生
             if(i2cVAL) leds[2]=1;
             else leds[2]=0;
         }