all ok yesMU2
Dependencies: mbed mbedTimer SDFileSystem MU2 GPS
main.cpp@10:87b3d19c8a5e, 2019-08-18 (annotated)
- 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?
User | Revision | Line number | New 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 |