otamesi

Dependencies:   mbed

Revision:
33:8d3757a0cd93
Parent:
32:c522d463c4fa
Child:
34:0e8f95f07612
--- a/main.cpp	Wed Dec 12 10:22:22 2018 +0000
+++ b/main.cpp	Fri Dec 14 05:46:43 2018 +0000
@@ -17,8 +17,9 @@
 
 MPU6050 mpu(p9, p10);                //(SDA,SCL)のピンをアサインしてね☆   加速度センサー
 
-DigitalIn flight(p21);      //フライトピン
-DigitalOut FET(p22);                //FET
+DigitalIn flight(p23);      //フライトピン
+DigitalOut SW(p22);         //トリガー用
+DigitalOut FET(p21);                //FET
 
 InterruptIn button1(p15);           //フォトインタラプタ
 InterruptIn button2(p18);
@@ -54,14 +55,19 @@
     
     printf("cansat start\r\n");
     
-  // FET = 0; 
-  /*   while(1) {
+    FET = 0;
+    SW = 1;  //p23をhigh(3.3V)にする。 
+     while(1) {
     if(flight==1) {
         wait(10);
         }
         
     else{
-        FET = 0;                       //FET、ニクロム線切断
+        if(flight==1) {
+        wait(10);
+        }
+        else{
+    /*    FET = 0;                       //FET、ニクロム線切断
         wait(20);
         FET = 1;
         wait(12);
@@ -69,19 +75,21 @@
         wait(10);
         FET = 1;
         wait(12);
-        FET = 0; 
+        FET = 0; */
+        SW = 0;  //p23をlow(0V)にする。 
     break;
             }
-    }     */
+    }
+    }
     
     motor1.stop(0);
     motor2.stop(0);
     
     wait(20);     //確認用
     
-     FILE *fp = fopen("/local/gps,foto.txt", "w");  // Open "gps.txt" on the local file system for writing
+//     FILE *fp = fopen("/local/gps,foto.txt", "w");  // Open "gps.txt" on the local file system for writing
     
-/* printf("GPS start\r\n");
+ printf("GPS start\r\n");
    FILE *fp = fopen("/local/gps,foto.txt", "w");  // Open "gps.txt" on the local file system for writing
     fprintf(fp, "GPS Start\r\n");
     int n;
@@ -205,7 +213,7 @@
         float X = x*0.000597964111328125;
         float Y = y*0.000597964111328125;
         float Z = z*0.000597964111328125; 
-        double a = X*X+Y*Y+Z*Z-95.982071137936;
+  /*      double a = X*X+Y*Y+Z*Z-95.982071137936;
         if (a>0){
         a = sqrt(a);
         }
@@ -225,10 +233,12 @@
 
         // 変位計算(速度を台形積分する)
         difference = ((speed + oldSpeed) * timespan) / 2 + difference;
-        oldSpeed = speed;
+        oldSpeed = speed;*/
 
         //printf(" speed %f difference %f\r\n",speed,difference);//速度と加速度を表示
-        printf("speed %f diference %f\r\n",speed,difference);//速度(m)と変位を表示*/
+     /*   printf("speed %f diference %f\r\n",speed,difference);//速度(m)と変位を表示*/
+     
+        printf("X=%f,Y=%f,Z=%f\r\n",X,Y,Z);
     
         printf("%d\r\n", test.read());              //フォトインタラプタ
         printf("%d\r\n", test2.read());
@@ -239,7 +249,7 @@
         else if (test.read() == 0 and flag == 1){   //そうじゃなくて今度はとうとうtestが0でスリットの部分になった瞬間なのにスイッチが1で切れているときは
             flag = 0;                               //まずこれでスイッチを0にして入れる。
                                                     //こうすることで同じスリットの中でtestが複数回0を返した時に何回も52.5mmを加算しつづけるということがなくなる
-            rightrun += 56.25;                            //総距離runに52.5を加算する
+            rightrun += 56.5625;                            //総距離runに52.5を加算する
             printf("test.read else\r\n");
         }
          if (test2.read() == 1 and flag2 == 0){
@@ -248,7 +258,7 @@
         }
         else if (test2.read() == 0 and flag2 == 1){
             flag2 = 0;
-            leftrun2 += 56.25;
+            leftrun2 += 56.5625;
             printf("test2.read else\r\n");
         }
         printf("%f", rightrun);
@@ -302,11 +312,11 @@
         wait(0.01);
         
         tt++;
-        if(tt == 10)
+        if(tt == 100)
         {
             fprintf(fp, "accel.rightrun.leftrun2\r\n");
             
-            fprintf(fp,"(%lf, %lf,%lf)\r\n", difference, rightrun, leftrun2);//加速度とフォトインタラプタによる距離を出力
+            fprintf(fp,"(%lf, %lf, %lf, %lf,%lf)\r\n", X, Y, Z, rightrun, leftrun2);//加速度とフォトインタラプタによる距離を出力
             tt=0;
         }    
         
@@ -373,14 +383,14 @@
             else if (test.read() == 0 and flag == 1)
             {
                 flag=0;
-                rightrun += 56.25;
+                rightrun += 56.5625;
             }
              if (test2.read() == 1 and flag2 == 0){
             flag2 = 1;
         }
         else if (test2.read() == 0 and flag2 == 1){
             flag2 = 0;
-            leftrun2 += 56.25;
+            leftrun2 += 56.5625;
         }
         printf("%f", rightrun);
         printf("\t%f\r\n", leftrun2);
@@ -394,7 +404,7 @@
         float X = x*0.000597964111328125;
         float Y = y*0.000597964111328125;
         float Z = z*0.000597964111328125; 
-        double a = X*X+Y*Y+Z*Z-95.982071137936;
+    /*    double a = X*X+Y*Y+Z*Z-95.982071137936;
         if (a>0){
         a = sqrt(a);
         }
@@ -417,7 +427,7 @@
         oldSpeed = speed;
 
         //printf(" speed %f difference %f\r\n",speed,difference);//速度と加速度を表示
-        printf("speed %f diference %f\r\n",speed,difference);//速度(m)と変位を表示*/
+    //    printf("speed %f diference %f\r\n",speed,difference);//速度(m)と変位を表示*/
         
         if (run >= 300000){                             //もし総距離が250以上ならば、というのもここの値は暫定値。とりあえずゴール地点が決まればまたその値に修正する
             break;                                  //つまりゴールについたらこのループからぬける
@@ -499,7 +509,7 @@
             
             
             fprintf(fp, "last accel.photo\r\n");
-            fprintf(fp,"(%lf, %lf)\r\n", difference, run);//最後の加速度とフォトインタラプタによる距離を出力
+            fprintf(fp,"(%lf)\r\n", run);//最後の加速度とフォトインタラプタによる距離を出力
             fprintf(fp, "last right.left\r\n");
             fprintf(fp,"(%lf, %lf)\r\n", rightrun, leftrun2);
             fclose(fp);