all ok yesMU2
Dependencies: mbed mbedTimer SDFileSystem MU2 GPS
Diff: main.cpp
- 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();