change2shinsu
Dependencies: mbed mbedTimer SDFileSystem MU2 GPS
Diff: main.cpp
- Revision:
- 15:bc013c313ef5
- Parent:
- 14:a07d2a958617
- Child:
- 16:917a2c03bd7c
--- a/main.cpp Tue Aug 20 22:11:17 2019 +0000 +++ b/main.cpp Sun Aug 25 11:10:27 2019 +0000 @@ -2,30 +2,43 @@ #include "MU2.h" #include "SDFileSystem.h" #include "inletclose.h" +#include "mbedTimer.h" //#include "GPS.h" + #define FIRETIME 5 //溶断時間を設定 -#define FALLTIME 90 //シェンロン展開してインレットを閉鎖するまでの時間を設定 +#define FALLTIME 10 //シェンロン展開してインレットを閉鎖するまでの時間を設定 #define CLOSETIME 10 //インレット閉鎖機構の稼働時間を設定 +char fname[]="/sd/CanSat/log0826_test10.csv";//ファイル名をここで設定 + ////////////////フライトピンが抜ける→シェンロン展開→インレット閉鎖→待機 //シーケンス番号//1//////////////////2///////////3///////////4/// //mbedのLEDが各シーケンス番号を2進数で示す:ex 0011 インレット閉鎖中 +//ただし今回はシーケンス4つなのでそれぞれのシーケンスでそれぞれのLEDが光る MU2 MuPort(p28,p27); -SDFileSystem sd(p11, p12, p13, p14, "sd"); +SDFileSystem sd(p5, p6, p7, p8, "sd");//3号機11,12,13,14 //GPS gps(p13,p14); -Serial gps(p9,p10); //tx, rx +Serial gps(p13,p14); //3号機9,10 -Inlet inlet(p26,p17,p15);//モーター出力,感圧センサー1入力,感圧センサー2入力 +Inlet inlet(p26,p15,p16);//モーター出力,感圧センサー1入力,感圧センサー2入力 -DigitalOut FIRE(p24); //溶断 +DigitalOut FIRE(p25); //溶断 DigitalOut myled(LED1); DigitalOut myled2(LED2); DigitalOut myled3(LED3); DigitalOut myled4(LED4); +mbedTimer myTimer; +Timer timer_rec;//時間計測 + +int val; +char sendMessage[128]; + + + /******************************************************************************* メイン関数 @@ -33,57 +46,60 @@ int main() { - wait(10);//起動してからちょっと待つ + + timer_rec.start(); + wait(0.1);//起動してからちょっと待つ inlet.Stop(); - //FILE* fp1= fopen("/sd/cansat/log3.txt", "w"); - FILE* fp= fopen("/sd/cansat/log0820_1.csv", "w"); - if(fp == NULL) { - + FILE* fp= fopen(fname, "a"); + if(fp == NULL) { + myled=1; myled2=1; myled3=1; myled4=1; - fp = fopen("/sd/cansat/log0820_1.csv", "w"); - wait(0.5); - myled=0; - myled2=0; - myled3=0; - myled4=0; - + fp = fopen(fname, "a"); + if(fp != NULL) { + myled=0; + myled2=0; + myled3=0; + myled4=0; + } + } - - fprintf(fp, "CanSatStart!\r\n"); + val=timer_rec.read(); + myTimer.sendMessage(val); + fprintf(fp, "%s CanSatStart!\r\n",myTimer.timeMessage); + MuPort.send(myTimer.timeMessage); MuPort.send("CanSat Start!\r\n"); - /*if(fp1 == NULL || fp2 == NULL) - { - (fp1 == NULL) ? fprintf(stderr, "fname1 open error.\n") : fclose(fp1); - (fp2 == NULL) ? fprintf(stderr, "fname2 open error.\n") : fclose(fp2); - return -1; - }*/ //溶断機構部分 fprintf(fp, "FireStart!\r\n"); MuPort.send("Fire Start!\r\n"); - myled=1;//テストようにLED光らせてる FIRE=1; + myled=1; wait(FIRETIME);//溶断にかかる時間TBD秒 FIRE=0; - wait(10); + myled=0; + + wait(3); + FIRE=1; + myled=1; wait(3);//溶断にかかる時間TBD秒 FIRE=0; + myled=0; fprintf(fp, "FireFinish!\r\n"); MuPort.send("Fire Finish!\r\n"); //溶断機構終わり - gps.baud(9600); + gps.baud(9600);//9600 char recvGPS=0; char getGPS[128]; int i=0; @@ -93,42 +109,45 @@ シェンロン展開 *******************************************************************************/ - fprintf(fp, "GPSstart!\r\n"); + 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; - if(gps.readable()) { - recvGPS=gps.getc(); - getGPS[i]=recvGPS; + //if(gps.readable()) { + recvGPS=gps.getc(); + getGPS[i]=recvGPS; - if(getGPS[i]=='\n') { + if(getGPS[i]=='\n') { - if((getGPS[5]=='G')&&(getGPS[6]=='A')) { + if((getGPS[5]=='G')&&(getGPS[6]=='A')) { - MuPort.send(getGPS); - myled=1; - /*if(fp == NULL) { - error("Could not open file for write\n"); - }*/ + val=timer_rec.read(); + myTimer.sendMessage(val); + MuPort.send(myTimer.timeMessage); + MuPort.send(getGPS); + + myled=1; - fprintf(fp, "%s\n",getGPS); - //fclose(fp); + fprintf(fp, "%s %s\n",myTimer.timeMessage,getGPS); - wait(1.0); - timer++; - } + //wait(1.0); + timer++; + } - i=0; - } - i++; - if(timer>FALLTIME) { //落下開始してからTBD秒後whileを抜ける. - break; - } + i=0; } + i++; + if(timer>FALLTIME) { //落下開始してからTBD秒後whileを抜ける. + fclose(fp); + break; + } + //} - // wait(1); //fclose(fp); } @@ -137,44 +156,53 @@ インレット閉鎖 *******************************************************************************/ - fprintf(fp, "InletStart!\r\n"); + fp= fopen(fname, "a"); + val=timer_rec.read(); + myTimer.sendMessage(val); + fprintf(fp, "%s InletStart!\r\n",myTimer.timeMessage); + MuPort.send(myTimer.timeMessage); MuPort.send("Inlet start!\r\n"); timer=0;//モーター時間で止める用 while(1) { + myled=0; myled2=0; myled3=1; - if(gps.readable()) { - recvGPS=gps.getc(); - getGPS[i]=recvGPS; + //if(gps.readable()) { + recvGPS=gps.getc(); + getGPS[i]=recvGPS; - if(getGPS[i]=='\n') { + if(getGPS[i]=='\n') { - if((getGPS[5]=='G')&&(getGPS[6]=='A')) { - MuPort.send(getGPS); - myled2=1; - /*if(fp == NULL) { - error("Could not open file for write\n"); - }*/ + if((getGPS[5]=='G')&&(getGPS[6]=='A')) { + val=timer_rec.read(); + myTimer.sendMessage(val); + MuPort.send(myTimer.timeMessage); + MuPort.send(getGPS); + myled2=1; + fprintf(fp, "%s %s\n",myTimer.timeMessage,getGPS); - fprintf(fp, "%s\n",getGPS); - //fclose(fp); - wait(1.0); - timer++; - } - - i=0; + //wait(1.0); + timer++; } - i++; - if(timer>CLOSETIME) { - inlet.Stop();// - break; - } - inlet.Close(1.1);//1より大きい引数にしておけばモーターはずっと回ってる. + + i=0; } + i++; + if(timer>CLOSETIME) { + inlet.Stop();// + val=timer_rec.read(); + myTimer.sendMessage(val); + fprintf(fp, "%s InletFinish!\r\n",myTimer.timeMessage); + MuPort.send(myTimer.timeMessage); + MuPort.send("Inlet finish!\r\n"); + fclose(fp); + break; + } + //inlet.Close(1.1);//1より大きい引数にしておけばモーターはずっと回ってる. + //} - // wait(1); //fclose(fp); } @@ -183,45 +211,48 @@ 待機モード(何もせずGPS信号を発する) *******************************************************************************/ - fprintf(fp, "StandbyModeStart!\r\n"); + fp= fopen(fname, "a"); + val=timer_rec.read(); + myTimer.sendMessage(val); + fprintf(fp, "%s StandbyModeStart!\r\n",myTimer.timeMessage); + MuPort.send(myTimer.timeMessage); MuPort.send("Standby mode start!\r\n"); + fclose(fp); while(1) { - myled4=1; + myled=0; + myled2=0; myled3=0; - if(gps.readable()) { - recvGPS=gps.getc(); - getGPS[i]=recvGPS; + myled4=1; - if(getGPS[i]=='\n') { + //if(gps.readable()) { + recvGPS=gps.getc(); + getGPS[i]=recvGPS; + + if(getGPS[i]=='\n') { - if((getGPS[5]=='G')&&(getGPS[6]=='A')) { - MuPort.send(getGPS); - myled3=1; - /*if(fp == NULL) { - error("Could not open file for write\n"); - }*/ + if((getGPS[5]=='G')&&(getGPS[6]=='A')) { + val=timer_rec.read(); + myTimer.sendMessage(val); + MuPort.send(myTimer.timeMessage); + MuPort.send(getGPS); + myled3=1; + fp= fopen(fname, "a"); + fprintf(fp, "%s %s\n",myTimer.timeMessage,getGPS); + fclose(fp); + timer++; + } - fprintf(fp, "%s\n",getGPS); - //fclose(fp); - wait(0.1); - timer++; - } + i=0; + } + i++; + //} - i=0; - } - i++; - } - - // wait(1); //fclose(fp); } - //fclose(fp1); - fclose(fp); - }