change2shinsu

Dependencies:   mbed mbedTimer SDFileSystem MU2 GPS

Committer:
Nerosho
Date:
Tue Aug 20 22:11:17 2019 +0000
Revision:
14:a07d2a958617
Parent:
11:a273a8decf90
Child:
15:bc013c313ef5
0821

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