change2shinsu

Dependencies:   mbed mbedTimer SDFileSystem MU2 GPS

Committer:
takepiyo
Date:
Sun Aug 18 05:43:34 2019 +0000
Revision:
11:a273a8decf90
Parent:
10:87b3d19c8a5e
Child:
13:33939d451801
Child:
14:a07d2a958617
all ok!!

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