all ok noMU2

Dependencies:   mbed mbedTimer SDFileSystem MU2 GPS

Revision:
18:05d5de29511d
Parent:
17:993f2fcc43df
Child:
19:75067f4d49b6
--- a/main.cpp	Tue Sep 03 11:46:42 2019 +0000
+++ b/main.cpp	Tue Sep 03 20:34:51 2019 +0000
@@ -5,17 +5,18 @@
 #include "inletclose.h"
 #include "mbedTimer.h"
 
-#define WAITTIME 5       //フライトピン抜けてからの待機時間
-#define FIRETIME 0       //溶断時間を設定
-#define FALLTIME 5       //シェンロン展開してインレットを閉鎖するまでの時間を設定
-#define CLOSETIME 60     //しきい値超えてからのインレット閉鎖機構の稼働時間を設定
-#define THRESHOLID 0.45  //感圧のしきい値
-#define INTERVALTIME 300 //インターバルモードの時間
-#define INTERVAL_HIGH 5  //インターバルモードでモーター回す時間
-#define INTERVAL_LOW 20  //インターバルモードでモーター止める時間
+#define WAITTIME 60       //フライトピン抜けてからの待機時間 60
+#define FIRETIME 5       //溶断時間を設定 5
+#define FALLTIME 420       //シェンロン展開してインレットを閉鎖するまでの時間を設定 420
+#define THRESHOLID 0.45  //感圧のしきい値 0.45
+#define SAMPLENUMBER 5   //しきい値判定に用いるサンプル数 5
+#define CLOSETIME 60     //しきい値超えてからのインレット閉鎖機構の稼働時間を設定 60
+#define INTERVALTIME 1800 //インターバルモードの時間 1800
+#define INTERVAL_HIGH 5  //インターバルモードでモーター回す時間 5
+#define INTERVAL_LOW 20  //インターバルモードでモーター止める時間 20
 
-char fname[]="/sd/CanSat/log0902test3.csv";//ファイル名をここで設定
-char fname2[]="/sd/CanSat/sensor0902test3.csv";//感圧センサーのログファイル
+char fname[]="/sd/CanSat/log0904EtoE2.csv";//ファイル名をここで設定
+char fname2[]="/sd/CanSat/sensor0904EtoE2.csv";//感圧センサーのログファイル
 
 ////////////////フライトピンが抜ける→シェンロン展開→インレット閉鎖→待機
 //シーケンス番号//1//////////////////2///////////3///////////4///
@@ -40,6 +41,8 @@
 
 int val;
 int val2;
+int val3;
+int count;
 char sendMessage[128];
 char sensorMessage[128];
 float ave_sensor;
@@ -56,7 +59,7 @@
 {
 
     timer_rec.start();
-    wait(WAITTIME);//起動してからちょっと待つ
+    wait(5);//起動してからちょっと待つ
     inlet.Stop();
     FILE* fp= fopen(fname, "a");
     if(fp == NULL) {
@@ -82,6 +85,52 @@
     MuPort.send(myTimer.timeMessage);
     MuPort.send("CanSat Start!\r\n");
 
+    /*******************************************************************************
+    溶断まで待機
+    *******************************************************************************/
+    timer=0;
+    val2=0;
+    val3=0;
+
+    val=timer_rec.read();
+    val3=val+val2;
+    myTimer.sendMessage(val3);
+    fprintf(fp, "%s GPSstart!\r\n",myTimer.timeMessage);
+    MuPort.send(myTimer.timeMessage);
+    MuPort.send("GPS start!\r\n");
+
+    while(1) {
+        myled=0;
+        myled2=1;
+
+        mygps.getGPGGA();
+        if(mygps.GPSread) {
+            myled=1;
+            val=timer_rec.read();
+            val3=val+val2;
+            myTimer.sendMessage(val3);
+            MuPort.send(myTimer.timeMessage);
+            MuPort.send(mygps.getGPS);
+            fprintf(fp, "%s %s\n",myTimer.timeMessage,mygps.getGPS);
+            timer++;
+        }
+
+        if(timer>=WAITTIME) { //落下開始してからTBD秒後whileを抜ける.
+            fclose(fp);
+            break;
+        }
+
+        if(val>=1800) {
+            //timer_rec.stop();
+            timer_rec.reset();
+            //timer_rec.start();
+            val2+=val;
+            val=0;
+
+        }
+
+    }
+
 
 //溶断機構部分
 
@@ -109,16 +158,10 @@
 
 
     /*******************************************************************************
-        シェンロン展開
+    シェンロン展開
     *******************************************************************************/
     timer=0;
 
-    val=timer_rec.read();
-    myTimer.sendMessage(val);
-    fprintf(fp, "%s GPSstart!\r\n",myTimer.timeMessage);
-    MuPort.send(myTimer.timeMessage);
-    MuPort.send("GPS start!\r\n");
-
     while(1) {
         myled=0;
         myled2=1;
@@ -127,18 +170,28 @@
         if(mygps.GPSread) {
             myled=1;
             val=timer_rec.read();
-            myTimer.sendMessage(val);
+            val3=val+val2;
+            myTimer.sendMessage(val3);
             MuPort.send(myTimer.timeMessage);
             MuPort.send(mygps.getGPS);
             fprintf(fp, "%s %s\n",myTimer.timeMessage,mygps.getGPS);
             timer++;
         }
 
-        if(timer>FALLTIME) { //落下開始してからTBD秒後whileを抜ける.
+        if(timer>=FALLTIME) { //落下開始してからTBD秒後whileを抜ける.
             fclose(fp);
             break;
         }
 
+        if(val>=1800) {
+            //timer_rec.stop();
+            timer_rec.reset();
+            //timer_rec.start();
+            val2+=val;
+            val=0;
+
+        }
+
     }
 
 
@@ -149,13 +202,15 @@
     fp= fopen(fname, "a");
     FILE* fp2= fopen(fname2, "a");
     val=timer_rec.read();
-    myTimer.sendMessage(val);
+    val3=val+val2;
+    myTimer.sendMessage(val3);
     fprintf(fp, "%s ClosingModeStart!\r\n",myTimer.timeMessage);
     MuPort.send(myTimer.timeMessage);
     MuPort.send("Closing Mode start!\r\n");
 
     timer=0;//モーター時間で止める用
     timer2=0;
+    count=0;
 
     while(1) {
         myled=0;
@@ -164,16 +219,22 @@
 
         mygps.getGPGGA();
 
+        val=timer_rec.read();
+        val3=val+val2;
+        myTimer.sendMessage(val3);
         inlet.getvalue1();
         inlet.getvalue2();
         ave_sensor=(inlet.value1+inlet.value2)/2;
-        fprintf(fp2, "%d,sensor1,%f,sensor2,%f,average,%f\n",timer2,inlet.value1,inlet.value2,ave_sensor);
+        //fp2= fopen(fname2, "a");
+        fprintf(fp2, "%s,%d,sensor1,%f,sensor2,%f,average,%f\n",myTimer.timeMessage,timer2,inlet.value1,inlet.value2,ave_sensor);
+        //fclose(fp2);
         timer2++;
 
         if(mygps.GPSread) {
             myled2=1;
             val=timer_rec.read();
-            myTimer.sendMessage(val);
+            val3=val+val2;
+            myTimer.sendMessage(val3);
             MuPort.send(myTimer.timeMessage);
             MuPort.send(mygps.getGPS);
             snprintf(sensorMessage, 128, "%f", ave_sensor);
@@ -182,10 +243,14 @@
         }
 
 
+        if(ave_sensor>THRESHOLID) {
+            count++;
+        }
 
-        if(ave_sensor>THRESHOLID) {
+        if(count>=SAMPLENUMBER) {
             val=timer_rec.read();
-            myTimer.sendMessage(val);
+            val3=val+val2;
+            myTimer.sendMessage(val3);
             fprintf(fp, "%s Get the rigidity!\r\n",myTimer.timeMessage);
             MuPort.send(myTimer.timeMessage);
             MuPort.send("Get the rigidity!\r\n");
@@ -195,16 +260,22 @@
             while(1) {
                 mygps.getGPGGA();
 
+                val=timer_rec.read();
+                val3=val+val2;
+                myTimer.sendMessage(val3);
                 inlet.getvalue1();
                 inlet.getvalue2();
                 ave_sensor=(inlet.value1+inlet.value2)/2;
-                fprintf(fp2, "%d,sensor1,%f,sensor2,%f,average,%f\n",timer2,inlet.value1,inlet.value2,ave_sensor);
+                //fp2= fopen(fname2, "a");
+                fprintf(fp2, "%s,%d,sensor1,%f,sensor2,%f,average,%f\n",myTimer.timeMessage,timer2,inlet.value1,inlet.value2,ave_sensor);
+                //fclose(fp2);
                 timer2++;
 
                 if(mygps.GPSread) {
                     myled2=1;
                     val=timer_rec.read();
-                    myTimer.sendMessage(val);
+                    val3=val+val2;
+                    myTimer.sendMessage(val3);
                     MuPort.send(myTimer.timeMessage);
                     MuPort.send(mygps.getGPS);
                     snprintf(sensorMessage, 128, "%f", ave_sensor);
@@ -214,7 +285,7 @@
                 }
 
 
-                if(timer>CLOSETIME) {
+                if(timer>=CLOSETIME) {
                     break;
                 }
 
@@ -222,7 +293,8 @@
 
             inlet.Stop();
             val=timer_rec.read();
-            myTimer.sendMessage(val);
+            val3=val+val2;
+            myTimer.sendMessage(val3);
             fprintf(fp, "%s ClosingModeFinish!\r\n",myTimer.timeMessage);
             MuPort.send(myTimer.timeMessage);
             MuPort.send("Closing Mode Finish!\r\n");
@@ -232,6 +304,15 @@
 
         }
 
+        if(val>=1800) {
+            //timer_rec.stop();
+            timer_rec.reset();
+            //timer_rec.start();
+            val2+=val;
+            val=0;
+
+        }
+
         inlet.Close(1.1);//1より大きい引数にしておけばモーターはずっと回ってる.
 
     }
@@ -240,19 +321,19 @@
     インレットインターバル閉鎖
     *******************************************************************************/
 
-
-    //fp= fopen(fname, "a");
-    //fp2= fopen(fname2, "a");
+    fp= fopen(fname, "a");
+    fp2= fopen(fname2, "a");
     val=timer_rec.read();
-    myTimer.sendMessage(val);
+    val3=val+val2;
+    myTimer.sendMessage(val3);
     fprintf(fp, "%s IntervalModeStart!\r\n",myTimer.timeMessage);
     MuPort.send(myTimer.timeMessage);
     MuPort.send("Interval Mode start!\r\n");
-    //fclose(fp);
+    fclose(fp);
 
     timer=0;//モーター時間で止める用
     timer3=0;
-    val2=0;
+
 
     while(1) {
 
@@ -263,21 +344,25 @@
 
         mygps.getGPGGA();
 
+        val=timer_rec.read();
+        val3=val+val2;
+        myTimer.sendMessage(val3);
         inlet.getvalue1();
         inlet.getvalue2();
         ave_sensor=(inlet.value1+inlet.value2)/2;
         //fp2= fopen(fname2, "a");
-        fprintf(fp2, "%d,sensor1,%f,sensor2,%f,average,%f\n",timer2,inlet.value1,inlet.value2,ave_sensor);
+        fprintf(fp2, "%s,%d,sensor1,%f,sensor2,%f,average,%f\n",myTimer.timeMessage,timer2,inlet.value1,inlet.value2,ave_sensor);
         //fclose(fp2);
         timer2++;
 
         if(mygps.GPSread) {
             myled3=1;
             val=timer_rec.read();
-            myTimer.sendMessage(val);
+            val3=val+val2;
+            myTimer.sendMessage(val3);
             MuPort.send(myTimer.timeMessage);
             MuPort.send(mygps.getGPS);
-            snprintf(sensorMessage, 128, "%f", ave_sensor);
+            snprintf(sensorMessage, 128, "%f\n", ave_sensor);
             MuPort.send(sensorMessage);
             fp= fopen(fname, "a");
             fprintf(fp, "%s %s\n",myTimer.timeMessage,mygps.getGPS);
@@ -290,7 +375,7 @@
 
 
 
-        if(timer3>INTERVAL_HIGH) {
+        if(timer3>=INTERVAL_HIGH) {
             inlet.Stop();
             myled=0;
             myled2=0;
@@ -303,21 +388,25 @@
             while(1) {
                 mygps.getGPGGA();
 
+                val=timer_rec.read();
+                val3=val+val2;
+                myTimer.sendMessage(val3);
                 inlet.getvalue1();
                 inlet.getvalue2();
                 ave_sensor=(inlet.value1+inlet.value2)/2;
                 //fp2= fopen(fname2, "a");
-                fprintf(fp2, "%d,sensor1,%f,sensor2,%f,average,%f\n",timer2,inlet.value1,inlet.value2,ave_sensor);
+                fprintf(fp2, "%s,%d,sensor1,%f,sensor2,%f,average,%f\n",myTimer.timeMessage,timer2,inlet.value1,inlet.value2,ave_sensor);
                 //fclose(fp2);
                 timer2++;
 
                 if(mygps.GPSread) {
                     myled3=1;
-                    val=val2+timer_rec.read();
-                    myTimer.sendMessage(val);
+                    val=timer_rec.read();
+                    val3=val+val2;
+                    myTimer.sendMessage(val3);
                     MuPort.send(myTimer.timeMessage);
                     MuPort.send(mygps.getGPS);
-                    snprintf(sensorMessage, 128, "%f", ave_sensor);
+                    snprintf(sensorMessage, 128, "%f\n", ave_sensor);
                     MuPort.send(sensorMessage);
                     fp= fopen(fname, "a");
                     fprintf(fp, "%s %s\n",myTimer.timeMessage,mygps.getGPS);
@@ -329,7 +418,7 @@
                 }
 
 
-                if(timer4>INTERVAL_LOW) {
+                if(timer4>=INTERVAL_LOW) {
                     break;
                 }
 
@@ -337,23 +426,21 @@
 
         }
 
-        if(val>1800) {
+        if(val>=1800) {
             //timer_rec.stop();
             timer_rec.reset();
             //timer_rec.start();
             val2+=val;
             val=0;
-            //fclose(fp);
-            //fclose(fp2);
-            //fp= fopen(fname, "a");
-            //fp2= fopen(fname2, "a");
+
         }
 
 
-        if(timer>INTERVALTIME) {
+        if(timer>=INTERVALTIME) {
             inlet.Stop();
             val=timer_rec.read();
-            myTimer.sendMessage(val);
+            val3=val+val2;
+            myTimer.sendMessage(val3);
             fprintf(fp, "%s IntervalModeFinish!\r\n",myTimer.timeMessage);
             MuPort.send(myTimer.timeMessage);
             MuPort.send("Interval Mode finish!\r\n");
@@ -373,7 +460,8 @@
 
     fp= fopen(fname, "a");
     val=timer_rec.read();
-    myTimer.sendMessage(val);
+    val3=val+val2;
+    myTimer.sendMessage(val3);
     fprintf(fp, "%s StandbyModeStart!\r\n",myTimer.timeMessage);
     MuPort.send(myTimer.timeMessage);
     MuPort.send("Standby mode start!\r\n");
@@ -389,8 +477,9 @@
         mygps.getGPGGA();
         if(mygps.GPSread) {
             myled3=1;
-            val=val2+timer_rec.read();
-            myTimer.sendMessage(val);
+            val=timer_rec.read();
+            val3=val+val2;
+            myTimer.sendMessage(val3);
             MuPort.send(myTimer.timeMessage);
             MuPort.send(mygps.getGPS);
             fp= fopen(fname, "a");
@@ -399,7 +488,7 @@
             //wait(1.0);
         }
 
-        if(val>1800) {
+        if(val>=1800) {
             //timer_rec.stop();
             timer_rec.reset();
             //timer_rec.start();