Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
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);
-
}