change2shinsu

Dependencies:   mbed mbedTimer SDFileSystem MU2 GPS

Committer:
takepiyo
Date:
Sun Aug 18 05:42:31 2019 +0000
Revision:
10:87b3d19c8a5e
Parent:
8:6b835a82b1eb
Child:
11:a273a8decf90
branch;

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