all ok yesMU2
Dependencies: mbed mbedTimer SDFileSystem MU2 GPS
main.cpp
- Committer:
- takepiyo
- Date:
- 2019-08-18
- Revision:
- 9:ef9cd32a5db9
- Parent:
- 8:6b835a82b1eb
File content as of revision 9:ef9cd32a5db9:
#include "mbed.h" #include "MU2.h" #include "SDFileSystem.h" #include "inletclose.h" //#include "GPS.h" //GPS統合 #define FIRETIME 5 //溶断時間を設定 #define FALLTIME 10 //シェンロン展開してインレットを閉鎖するまでの時間を設定 #define CLOSETIME 10 //インレット閉鎖機構の稼働時間を設定 ////////////////フライトピンが抜ける→シェンロン展開→インレット閉鎖→待機 //シーケンス番号//1//////////////////2///////////3///////////4/// //mbedのLEDが各シーケンス番号を2進数で示す:ex 0011 インレット閉鎖中 MU2 MuPort(p28,p27); SDFileSystem sd(p11, p12, p13, p14, "sd"); //GPS gps(p13,p14); Serial gps(p9,p10); //tx, rx Inlet inlet(p26,p17,p15);//モーター出力,感圧センサー1入力,感圧センサー2入力 DigitalOut FIRE(p16); //溶断 DigitalOut myled(LED1); DigitalOut myled2(LED2); DigitalOut myled3(LED3); DigitalOut myled4(LED4); int main() { wait(0.1);//起動してからちょっと待つ inlet.Stop(); //FILE* fp1= fopen("/sd/cansat/log3.txt", "w"); FILE* fp2= fopen("/sd/cansat/gpsdata0808_2.csv", "w"); /*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(fp1, "CanSat start!\r\n"); //fprintf(fp1, "Fire!!\r\n"); myled=1;//テストようにLED光らせてる FIRE=1; wait(FIRETIME);//溶断にかかる時間TBD秒 FIRE=0; //溶断機構終わり gps.baud(9600); char recvGPS=0; char getGPS[128]; int i=0; int timer=0; //fprintf(fp1, "GPS start!\r\n"); while(1) { myled=0; myled2=1; if(gps.readable()) { recvGPS=gps.getc(); getGPS[i]=recvGPS; if(getGPS[i]=='\n') { if((getGPS[5]=='G')&&(getGPS[6]=='A')) { MuPort.send(getGPS); myled=1; /*if(fp == NULL) { error("Could not open file for write\n"); }*/ fprintf(fp2, "%s\n",getGPS); //fclose(fp); wait(1.0); timer++; } i=0; } i++; if(timer>FALLTIME)//落下開始してからTBD秒後whileを抜ける. { break; } } // wait(1); //fclose(fp); } timer=0;//モーター時間で止めるよう while(1) { myled2=0; myled3=1; if(gps.readable()) { recvGPS=gps.getc(); getGPS[i]=recvGPS; 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"); }*/ fprintf(fp2, "%s\n",getGPS); //fclose(fp); wait(1.0); timer++; } i=0; } i++; if(timer>CLOSETIME) { inlet.Stop();// break; } inlet.Close(1.1);//1より大きい引数にしておけばモーターはずっと回ってる. } // wait(1); //fclose(fp); } //何もせずGPS信号を発する while(1) { myled4=1; myled3=0; 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"); }*/ fprintf(fp2, "%s\n",getGPS); //fclose(fp); wait(0.1); timer++; } i=0; } i++; } // wait(1); //fclose(fp); } //fclose(fp1); fclose(fp2); }