Titech Cansat / Mbed 2 deprecated FM_ver3_for_ARLISS

Dependencies:   mbed mbedTimer SDFileSystem MU2 GPS

Files at this revision

API Documentation at this revision

Comitter:
Nerosho
Date:
Tue Sep 03 20:34:51 2019 +0000
Parent:
17:993f2fcc43df
Child:
19:75067f4d49b6
Commit message:
0904LAST

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
mbedTimer.lib Show annotated file Show diff for this revision Revisions of this file
--- 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();
--- a/mbedTimer.lib	Tue Sep 03 11:46:42 2019 +0000
+++ b/mbedTimer.lib	Tue Sep 03 20:34:51 2019 +0000
@@ -1,1 +1,1 @@
-https://os.mbed.com/teams/KobayashiTakeshi/code/mbedTimer/#a992e3237cfe
+https://os.mbed.com/teams/KobayashiTakeshi/code/mbedTimer/#86a2f0f2a833