change2shinsu

Dependencies:   mbed mbedTimer SDFileSystem MU2 GPS

Committer:
Nerosho
Date:
Sun Aug 25 11:10:27 2019 +0000
Revision:
15:bc013c313ef5
Parent:
14:a07d2a958617
Child:
16:917a2c03bd7c
0825

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Nerosho 0:d0f3991839ec 1 #include "mbed.h"
Nerosho 0:d0f3991839ec 2 #include "MU2.h"
Nerosho 0:d0f3991839ec 3 #include "SDFileSystem.h"
takepiyo 3:4f1bac105598 4 #include "inletclose.h"
Nerosho 15:bc013c313ef5 5 #include "mbedTimer.h"
Nerosho 2:d6dc5c2224cc 6 //#include "GPS.h"
Nerosho 1:a8772ca26d1b 7
Nerosho 15:bc013c313ef5 8
takepiyo 8:6b835a82b1eb 9 #define FIRETIME 5 //溶断時間を設定
Nerosho 15:bc013c313ef5 10 #define FALLTIME 10 //シェンロン展開してインレットを閉鎖するまでの時間を設定
takepiyo 8:6b835a82b1eb 11 #define CLOSETIME 10 //インレット閉鎖機構の稼働時間を設定
takepiyo 8:6b835a82b1eb 12
Nerosho 15:bc013c313ef5 13 char fname[]="/sd/CanSat/log0826_test10.csv";//ファイル名をここで設定
Nerosho 15:bc013c313ef5 14
takepiyo 8:6b835a82b1eb 15 ////////////////フライトピンが抜ける→シェンロン展開→インレット閉鎖→待機
takepiyo 8:6b835a82b1eb 16 //シーケンス番号//1//////////////////2///////////3///////////4///
Nerosho 14:a07d2a958617 17 //mbedのLEDが各シーケンス番号を2進数で示す:ex 0011 インレット閉鎖中
Nerosho 15:bc013c313ef5 18 //ただし今回はシーケンス4つなのでそれぞれのシーケンスでそれぞれのLEDが光る
takepiyo 8:6b835a82b1eb 19
takepiyo 4:0d087e3f731d 20 MU2 MuPort(p28,p27);
Nerosho 15:bc013c313ef5 21 SDFileSystem sd(p5, p6, p7, p8, "sd");//3号機11,12,13,14
Nerosho 2:d6dc5c2224cc 22 //GPS gps(p13,p14);
Nerosho 15:bc013c313ef5 23 Serial gps(p13,p14); //3号機9,10
takepiyo 3:4f1bac105598 24
Nerosho 15:bc013c313ef5 25 Inlet inlet(p26,p15,p16);//モーター出力,感圧センサー1入力,感圧センサー2入力
Nerosho 0:d0f3991839ec 26
Nerosho 15:bc013c313ef5 27 DigitalOut FIRE(p25); //溶断
Nerosho 1:a8772ca26d1b 28
Nerosho 1:a8772ca26d1b 29 DigitalOut myled(LED1);
takepiyo 4:0d087e3f731d 30 DigitalOut myled2(LED2);
Nerosho 1:a8772ca26d1b 31 DigitalOut myled3(LED3);
Nerosho 1:a8772ca26d1b 32 DigitalOut myled4(LED4);
Nerosho 0:d0f3991839ec 33
Nerosho 15:bc013c313ef5 34 mbedTimer myTimer;
Nerosho 15:bc013c313ef5 35 Timer timer_rec;//時間計測
Nerosho 15:bc013c313ef5 36
Nerosho 15:bc013c313ef5 37 int val;
Nerosho 15:bc013c313ef5 38 char sendMessage[128];
Nerosho 15:bc013c313ef5 39
Nerosho 15:bc013c313ef5 40
Nerosho 15:bc013c313ef5 41
Nerosho 14:a07d2a958617 42
Nerosho 14:a07d2a958617 43 /*******************************************************************************
Nerosho 14:a07d2a958617 44 メイン関数
Nerosho 14:a07d2a958617 45 *******************************************************************************/
Nerosho 14:a07d2a958617 46
Nerosho 0:d0f3991839ec 47 int main()
Nerosho 0:d0f3991839ec 48 {
Nerosho 15:bc013c313ef5 49
Nerosho 15:bc013c313ef5 50 timer_rec.start();
Nerosho 15:bc013c313ef5 51 wait(0.1);//起動してからちょっと待つ
takepiyo 8:6b835a82b1eb 52 inlet.Stop();
Nerosho 15:bc013c313ef5 53 FILE* fp= fopen(fname, "a");
Nerosho 15:bc013c313ef5 54 if(fp == NULL) {
Nerosho 15:bc013c313ef5 55
Nerosho 14:a07d2a958617 56 myled=1;
Nerosho 14:a07d2a958617 57 myled2=1;
Nerosho 14:a07d2a958617 58 myled3=1;
Nerosho 14:a07d2a958617 59 myled4=1;
Nerosho 14:a07d2a958617 60
Nerosho 15:bc013c313ef5 61 fp = fopen(fname, "a");
Nerosho 15:bc013c313ef5 62 if(fp != NULL) {
Nerosho 15:bc013c313ef5 63 myled=0;
Nerosho 15:bc013c313ef5 64 myled2=0;
Nerosho 15:bc013c313ef5 65 myled3=0;
Nerosho 15:bc013c313ef5 66 myled4=0;
Nerosho 15:bc013c313ef5 67 }
Nerosho 15:bc013c313ef5 68
Nerosho 14:a07d2a958617 69 }
Nerosho 14:a07d2a958617 70
Nerosho 15:bc013c313ef5 71 val=timer_rec.read();
Nerosho 15:bc013c313ef5 72 myTimer.sendMessage(val);
Nerosho 15:bc013c313ef5 73 fprintf(fp, "%s CanSatStart!\r\n",myTimer.timeMessage);
Nerosho 15:bc013c313ef5 74 MuPort.send(myTimer.timeMessage);
Nerosho 14:a07d2a958617 75 MuPort.send("CanSat Start!\r\n");
takepiyo 3:4f1bac105598 76
Nerosho 2:d6dc5c2224cc 77
takepiyo 3:4f1bac105598 78 //溶断機構部分
Nerosho 2:d6dc5c2224cc 79
Nerosho 14:a07d2a958617 80 fprintf(fp, "FireStart!\r\n");
Nerosho 14:a07d2a958617 81 MuPort.send("Fire Start!\r\n");
Nerosho 14:a07d2a958617 82
takepiyo 8:6b835a82b1eb 83 FIRE=1;
Nerosho 15:bc013c313ef5 84 myled=1;
takepiyo 8:6b835a82b1eb 85 wait(FIRETIME);//溶断にかかる時間TBD秒
takepiyo 8:6b835a82b1eb 86 FIRE=0;
Nerosho 15:bc013c313ef5 87 myled=0;
Nerosho 15:bc013c313ef5 88
Nerosho 15:bc013c313ef5 89 wait(3);
Nerosho 15:bc013c313ef5 90
Nerosho 14:a07d2a958617 91 FIRE=1;
Nerosho 15:bc013c313ef5 92 myled=1;
Nerosho 14:a07d2a958617 93 wait(3);//溶断にかかる時間TBD秒
Nerosho 14:a07d2a958617 94 FIRE=0;
Nerosho 15:bc013c313ef5 95 myled=0;
Nerosho 14:a07d2a958617 96
Nerosho 14:a07d2a958617 97 fprintf(fp, "FireFinish!\r\n");
Nerosho 14:a07d2a958617 98 MuPort.send("Fire Finish!\r\n");
Nerosho 14:a07d2a958617 99
takepiyo 3:4f1bac105598 100 //溶断機構終わり
Nerosho 0:d0f3991839ec 101
Nerosho 15:bc013c313ef5 102 gps.baud(9600);//9600
Nerosho 2:d6dc5c2224cc 103 char recvGPS=0;
Nerosho 2:d6dc5c2224cc 104 char getGPS[128];
Nerosho 2:d6dc5c2224cc 105 int i=0;
takepiyo 3:4f1bac105598 106 int timer=0;
takepiyo 3:4f1bac105598 107
Nerosho 14:a07d2a958617 108 /*******************************************************************************
Nerosho 14:a07d2a958617 109 シェンロン展開
Nerosho 14:a07d2a958617 110 *******************************************************************************/
Nerosho 2:d6dc5c2224cc 111
Nerosho 15:bc013c313ef5 112 val=timer_rec.read();
Nerosho 15:bc013c313ef5 113 myTimer.sendMessage(val);
Nerosho 15:bc013c313ef5 114 fprintf(fp, "%s GPSstart!\r\n",myTimer.timeMessage);
Nerosho 15:bc013c313ef5 115 MuPort.send(myTimer.timeMessage);
Nerosho 14:a07d2a958617 116 MuPort.send("GPS start!\r\n");
Nerosho 14:a07d2a958617 117
Nerosho 14:a07d2a958617 118 while(1) {
takepiyo 8:6b835a82b1eb 119 myled=0;
takepiyo 8:6b835a82b1eb 120 myled2=1;
Nerosho 15:bc013c313ef5 121 //if(gps.readable()) {
Nerosho 15:bc013c313ef5 122 recvGPS=gps.getc();
Nerosho 15:bc013c313ef5 123 getGPS[i]=recvGPS;
Nerosho 2:d6dc5c2224cc 124
Nerosho 15:bc013c313ef5 125 if(getGPS[i]=='\n') {
Nerosho 2:d6dc5c2224cc 126
Nerosho 15:bc013c313ef5 127 if((getGPS[5]=='G')&&(getGPS[6]=='A')) {
Nerosho 14:a07d2a958617 128
Nerosho 15:bc013c313ef5 129 val=timer_rec.read();
Nerosho 15:bc013c313ef5 130 myTimer.sendMessage(val);
Nerosho 15:bc013c313ef5 131 MuPort.send(myTimer.timeMessage);
Nerosho 15:bc013c313ef5 132 MuPort.send(getGPS);
Nerosho 15:bc013c313ef5 133
Nerosho 15:bc013c313ef5 134 myled=1;
takepiyo 3:4f1bac105598 135
Nerosho 15:bc013c313ef5 136 fprintf(fp, "%s %s\n",myTimer.timeMessage,getGPS);
Nerosho 14:a07d2a958617 137
Nerosho 15:bc013c313ef5 138 //wait(1.0);
Nerosho 15:bc013c313ef5 139 timer++;
Nerosho 15:bc013c313ef5 140 }
Nerosho 2:d6dc5c2224cc 141
Nerosho 15:bc013c313ef5 142 i=0;
Nerosho 2:d6dc5c2224cc 143 }
Nerosho 15:bc013c313ef5 144 i++;
Nerosho 15:bc013c313ef5 145 if(timer>FALLTIME) { //落下開始してからTBD秒後whileを抜ける.
Nerosho 15:bc013c313ef5 146 fclose(fp);
Nerosho 15:bc013c313ef5 147 break;
Nerosho 15:bc013c313ef5 148 }
Nerosho 15:bc013c313ef5 149 //}
Nerosho 2:d6dc5c2224cc 150
Nerosho 2:d6dc5c2224cc 151 //fclose(fp);
Nerosho 0:d0f3991839ec 152 }
Nerosho 14:a07d2a958617 153
Nerosho 14:a07d2a958617 154
Nerosho 14:a07d2a958617 155 /*******************************************************************************
Nerosho 14:a07d2a958617 156 インレット閉鎖
Nerosho 14:a07d2a958617 157 *******************************************************************************/
Nerosho 14:a07d2a958617 158
Nerosho 15:bc013c313ef5 159 fp= fopen(fname, "a");
Nerosho 15:bc013c313ef5 160 val=timer_rec.read();
Nerosho 15:bc013c313ef5 161 myTimer.sendMessage(val);
Nerosho 15:bc013c313ef5 162 fprintf(fp, "%s InletStart!\r\n",myTimer.timeMessage);
Nerosho 15:bc013c313ef5 163 MuPort.send(myTimer.timeMessage);
Nerosho 14:a07d2a958617 164 MuPort.send("Inlet start!\r\n");
Nerosho 14:a07d2a958617 165
Nerosho 14:a07d2a958617 166 timer=0;//モーター時間で止める用
Nerosho 14:a07d2a958617 167
Nerosho 14:a07d2a958617 168 while(1) {
Nerosho 15:bc013c313ef5 169 myled=0;
takepiyo 8:6b835a82b1eb 170 myled2=0;
takepiyo 8:6b835a82b1eb 171 myled3=1;
Nerosho 15:bc013c313ef5 172 //if(gps.readable()) {
Nerosho 15:bc013c313ef5 173 recvGPS=gps.getc();
Nerosho 15:bc013c313ef5 174 getGPS[i]=recvGPS;
takepiyo 3:4f1bac105598 175
Nerosho 15:bc013c313ef5 176 if(getGPS[i]=='\n') {
takepiyo 3:4f1bac105598 177
Nerosho 15:bc013c313ef5 178 if((getGPS[5]=='G')&&(getGPS[6]=='A')) {
Nerosho 15:bc013c313ef5 179 val=timer_rec.read();
Nerosho 15:bc013c313ef5 180 myTimer.sendMessage(val);
Nerosho 15:bc013c313ef5 181 MuPort.send(myTimer.timeMessage);
Nerosho 15:bc013c313ef5 182 MuPort.send(getGPS);
Nerosho 15:bc013c313ef5 183 myled2=1;
Nerosho 15:bc013c313ef5 184 fprintf(fp, "%s %s\n",myTimer.timeMessage,getGPS);
takepiyo 3:4f1bac105598 185
Nerosho 15:bc013c313ef5 186 //wait(1.0);
Nerosho 15:bc013c313ef5 187 timer++;
takepiyo 3:4f1bac105598 188 }
Nerosho 15:bc013c313ef5 189
Nerosho 15:bc013c313ef5 190 i=0;
takepiyo 3:4f1bac105598 191 }
Nerosho 15:bc013c313ef5 192 i++;
Nerosho 15:bc013c313ef5 193 if(timer>CLOSETIME) {
Nerosho 15:bc013c313ef5 194 inlet.Stop();//
Nerosho 15:bc013c313ef5 195 val=timer_rec.read();
Nerosho 15:bc013c313ef5 196 myTimer.sendMessage(val);
Nerosho 15:bc013c313ef5 197 fprintf(fp, "%s InletFinish!\r\n",myTimer.timeMessage);
Nerosho 15:bc013c313ef5 198 MuPort.send(myTimer.timeMessage);
Nerosho 15:bc013c313ef5 199 MuPort.send("Inlet finish!\r\n");
Nerosho 15:bc013c313ef5 200 fclose(fp);
Nerosho 15:bc013c313ef5 201 break;
Nerosho 15:bc013c313ef5 202 }
Nerosho 15:bc013c313ef5 203 //inlet.Close(1.1);//1より大きい引数にしておけばモーターはずっと回ってる.
Nerosho 15:bc013c313ef5 204 //}
takepiyo 3:4f1bac105598 205
takepiyo 3:4f1bac105598 206 //fclose(fp);
takepiyo 3:4f1bac105598 207 }
Nerosho 14:a07d2a958617 208
Nerosho 14:a07d2a958617 209
Nerosho 14:a07d2a958617 210 /*******************************************************************************
Nerosho 14:a07d2a958617 211 待機モード(何もせずGPS信号を発する)
Nerosho 14:a07d2a958617 212 *******************************************************************************/
Nerosho 14:a07d2a958617 213
Nerosho 15:bc013c313ef5 214 fp= fopen(fname, "a");
Nerosho 15:bc013c313ef5 215 val=timer_rec.read();
Nerosho 15:bc013c313ef5 216 myTimer.sendMessage(val);
Nerosho 15:bc013c313ef5 217 fprintf(fp, "%s StandbyModeStart!\r\n",myTimer.timeMessage);
Nerosho 15:bc013c313ef5 218 MuPort.send(myTimer.timeMessage);
Nerosho 14:a07d2a958617 219 MuPort.send("Standby mode start!\r\n");
Nerosho 15:bc013c313ef5 220 fclose(fp);
Nerosho 14:a07d2a958617 221
Nerosho 14:a07d2a958617 222
Nerosho 14:a07d2a958617 223 while(1) {
Nerosho 15:bc013c313ef5 224 myled=0;
Nerosho 15:bc013c313ef5 225 myled2=0;
takepiyo 8:6b835a82b1eb 226 myled3=0;
Nerosho 15:bc013c313ef5 227 myled4=1;
takepiyo 6:b7bf39bc3487 228
Nerosho 15:bc013c313ef5 229 //if(gps.readable()) {
Nerosho 15:bc013c313ef5 230 recvGPS=gps.getc();
Nerosho 15:bc013c313ef5 231 getGPS[i]=recvGPS;
Nerosho 15:bc013c313ef5 232
Nerosho 15:bc013c313ef5 233 if(getGPS[i]=='\n') {
takepiyo 6:b7bf39bc3487 234
Nerosho 15:bc013c313ef5 235 if((getGPS[5]=='G')&&(getGPS[6]=='A')) {
Nerosho 15:bc013c313ef5 236 val=timer_rec.read();
Nerosho 15:bc013c313ef5 237 myTimer.sendMessage(val);
Nerosho 15:bc013c313ef5 238 MuPort.send(myTimer.timeMessage);
Nerosho 15:bc013c313ef5 239 MuPort.send(getGPS);
Nerosho 15:bc013c313ef5 240 myled3=1;
Nerosho 15:bc013c313ef5 241 fp= fopen(fname, "a");
Nerosho 15:bc013c313ef5 242 fprintf(fp, "%s %s\n",myTimer.timeMessage,getGPS);
Nerosho 15:bc013c313ef5 243 fclose(fp);
Nerosho 15:bc013c313ef5 244 timer++;
Nerosho 15:bc013c313ef5 245 }
takepiyo 6:b7bf39bc3487 246
Nerosho 15:bc013c313ef5 247 i=0;
Nerosho 15:bc013c313ef5 248 }
Nerosho 15:bc013c313ef5 249 i++;
Nerosho 15:bc013c313ef5 250 //}
takepiyo 6:b7bf39bc3487 251
takepiyo 6:b7bf39bc3487 252 //fclose(fp);
takepiyo 6:b7bf39bc3487 253 }
Nerosho 14:a07d2a958617 254
takepiyo 6:b7bf39bc3487 255
Nerosho 2:d6dc5c2224cc 256 }
Nerosho 2:d6dc5c2224cc 257
Nerosho 2:d6dc5c2224cc 258
Nerosho 2:d6dc5c2224cc 259