change2shinsu

Dependencies:   mbed mbedTimer SDFileSystem MU2 GPS

Committer:
Nerosho
Date:
Sat Sep 07 22:07:18 2019 +0000
Revision:
19:75067f4d49b6
Parent:
18:05d5de29511d
Child:
20:b70e877cdc0f
0907 for ARLISS

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 16:917a2c03bd7c 3 #include "GPS.h"
Nerosho 0:d0f3991839ec 4 #include "SDFileSystem.h"
takepiyo 3:4f1bac105598 5 #include "inletclose.h"
Nerosho 15:bc013c313ef5 6 #include "mbedTimer.h"
Nerosho 15:bc013c313ef5 7
Nerosho 18:05d5de29511d 8 #define WAITTIME 60 //フライトピン抜けてからの待機時間 60
Nerosho 18:05d5de29511d 9 #define FIRETIME 5 //溶断時間を設定 5
Nerosho 18:05d5de29511d 10 #define FALLTIME 420 //シェンロン展開してインレットを閉鎖するまでの時間を設定 420
Nerosho 18:05d5de29511d 11 #define THRESHOLID 0.45 //感圧のしきい値 0.45
Nerosho 18:05d5de29511d 12 #define SAMPLENUMBER 5 //しきい値判定に用いるサンプル数 5
Nerosho 18:05d5de29511d 13 #define CLOSETIME 60 //しきい値超えてからのインレット閉鎖機構の稼働時間を設定 60
Nerosho 19:75067f4d49b6 14 #define LIMITTIME 1800 //しきい値超えなくてもインターバルモードへ移行
Nerosho 19:75067f4d49b6 15 #define INTERVALTIME 7200 //インターバルモードの時間 1800
Nerosho 18:05d5de29511d 16 #define INTERVAL_HIGH 5 //インターバルモードでモーター回す時間 5
Nerosho 18:05d5de29511d 17 #define INTERVAL_LOW 20 //インターバルモードでモーター止める時間 20
takepiyo 8:6b835a82b1eb 18
Nerosho 18:05d5de29511d 19 char fname[]="/sd/CanSat/log0904EtoE2.csv";//ファイル名をここで設定
Nerosho 18:05d5de29511d 20 char fname2[]="/sd/CanSat/sensor0904EtoE2.csv";//感圧センサーのログファイル
Nerosho 15:bc013c313ef5 21
takepiyo 8:6b835a82b1eb 22 ////////////////フライトピンが抜ける→シェンロン展開→インレット閉鎖→待機
takepiyo 8:6b835a82b1eb 23 //シーケンス番号//1//////////////////2///////////3///////////4///
Nerosho 14:a07d2a958617 24 //mbedのLEDが各シーケンス番号を2進数で示す:ex 0011 インレット閉鎖中
Nerosho 15:bc013c313ef5 25 //ただし今回はシーケンス4つなのでそれぞれのシーケンスでそれぞれのLEDが光る
takepiyo 8:6b835a82b1eb 26
takepiyo 4:0d087e3f731d 27 MU2 MuPort(p28,p27);
Nerosho 16:917a2c03bd7c 28 SDFileSystem sd(p5, p6, p7, p8, "sd");//3号機11,12,13,14 4号機5,6,7,8
Nerosho 16:917a2c03bd7c 29 GPS mygps(p13,p14);//3号機9,10 4号機13,14
takepiyo 3:4f1bac105598 30
Nerosho 15:bc013c313ef5 31 Inlet inlet(p26,p15,p16);//モーター出力,感圧センサー1入力,感圧センサー2入力
Nerosho 0:d0f3991839ec 32
Nerosho 16:917a2c03bd7c 33 DigitalOut FIRE(p25); //3号機24 4号機25
Nerosho 1:a8772ca26d1b 34
Nerosho 1:a8772ca26d1b 35 DigitalOut myled(LED1);
takepiyo 4:0d087e3f731d 36 DigitalOut myled2(LED2);
Nerosho 1:a8772ca26d1b 37 DigitalOut myled3(LED3);
Nerosho 1:a8772ca26d1b 38 DigitalOut myled4(LED4);
Nerosho 0:d0f3991839ec 39
Nerosho 15:bc013c313ef5 40 mbedTimer myTimer;
Nerosho 15:bc013c313ef5 41 Timer timer_rec;//時間計測
Nerosho 15:bc013c313ef5 42
Nerosho 15:bc013c313ef5 43 int val;
Nerosho 16:917a2c03bd7c 44 int val2;
Nerosho 18:05d5de29511d 45 int val3;
Nerosho 18:05d5de29511d 46 int count;
Nerosho 15:bc013c313ef5 47 char sendMessage[128];
Nerosho 17:993f2fcc43df 48 char sensorMessage[128];
Nerosho 16:917a2c03bd7c 49 float ave_sensor;
Nerosho 16:917a2c03bd7c 50 int timer;
Nerosho 16:917a2c03bd7c 51 int timer2;
Nerosho 16:917a2c03bd7c 52 int timer3;
Nerosho 16:917a2c03bd7c 53 int timer4;
Nerosho 14:a07d2a958617 54
Nerosho 14:a07d2a958617 55 /*******************************************************************************
Nerosho 14:a07d2a958617 56 メイン関数
Nerosho 14:a07d2a958617 57 *******************************************************************************/
Nerosho 14:a07d2a958617 58
Nerosho 0:d0f3991839ec 59 int main()
Nerosho 0:d0f3991839ec 60 {
Nerosho 15:bc013c313ef5 61
Nerosho 15:bc013c313ef5 62 timer_rec.start();
Nerosho 18:05d5de29511d 63 wait(5);//起動してからちょっと待つ
takepiyo 8:6b835a82b1eb 64 inlet.Stop();
Nerosho 15:bc013c313ef5 65 FILE* fp= fopen(fname, "a");
Nerosho 15:bc013c313ef5 66 if(fp == NULL) {
Nerosho 15:bc013c313ef5 67
Nerosho 14:a07d2a958617 68 myled=1;
Nerosho 14:a07d2a958617 69 myled2=1;
Nerosho 14:a07d2a958617 70 myled3=1;
Nerosho 14:a07d2a958617 71 myled4=1;
Nerosho 14:a07d2a958617 72
Nerosho 15:bc013c313ef5 73 fp = fopen(fname, "a");
Nerosho 15:bc013c313ef5 74 if(fp != NULL) {
Nerosho 15:bc013c313ef5 75 myled=0;
Nerosho 15:bc013c313ef5 76 myled2=0;
Nerosho 15:bc013c313ef5 77 myled3=0;
Nerosho 15:bc013c313ef5 78 myled4=0;
Nerosho 15:bc013c313ef5 79 }
Nerosho 15:bc013c313ef5 80
Nerosho 14:a07d2a958617 81 }
Nerosho 14:a07d2a958617 82
Nerosho 15:bc013c313ef5 83 val=timer_rec.read();
Nerosho 15:bc013c313ef5 84 myTimer.sendMessage(val);
Nerosho 15:bc013c313ef5 85 fprintf(fp, "%s CanSatStart!\r\n",myTimer.timeMessage);
Nerosho 15:bc013c313ef5 86 MuPort.send(myTimer.timeMessage);
Nerosho 14:a07d2a958617 87 MuPort.send("CanSat Start!\r\n");
takepiyo 3:4f1bac105598 88
Nerosho 18:05d5de29511d 89 /*******************************************************************************
Nerosho 18:05d5de29511d 90 溶断まで待機
Nerosho 18:05d5de29511d 91 *******************************************************************************/
Nerosho 18:05d5de29511d 92 timer=0;
Nerosho 18:05d5de29511d 93 val2=0;
Nerosho 18:05d5de29511d 94 val3=0;
Nerosho 18:05d5de29511d 95
Nerosho 18:05d5de29511d 96 val=timer_rec.read();
Nerosho 18:05d5de29511d 97 val3=val+val2;
Nerosho 18:05d5de29511d 98 myTimer.sendMessage(val3);
Nerosho 18:05d5de29511d 99 fprintf(fp, "%s GPSstart!\r\n",myTimer.timeMessage);
Nerosho 18:05d5de29511d 100 MuPort.send(myTimer.timeMessage);
Nerosho 18:05d5de29511d 101 MuPort.send("GPS start!\r\n");
Nerosho 18:05d5de29511d 102
Nerosho 18:05d5de29511d 103 while(1) {
Nerosho 18:05d5de29511d 104 myled=0;
Nerosho 18:05d5de29511d 105 myled2=1;
Nerosho 18:05d5de29511d 106
Nerosho 18:05d5de29511d 107 mygps.getGPGGA();
Nerosho 18:05d5de29511d 108 if(mygps.GPSread) {
Nerosho 18:05d5de29511d 109 myled=1;
Nerosho 18:05d5de29511d 110 val=timer_rec.read();
Nerosho 18:05d5de29511d 111 val3=val+val2;
Nerosho 18:05d5de29511d 112 myTimer.sendMessage(val3);
Nerosho 18:05d5de29511d 113 MuPort.send(myTimer.timeMessage);
Nerosho 18:05d5de29511d 114 MuPort.send(mygps.getGPS);
Nerosho 18:05d5de29511d 115 fprintf(fp, "%s %s\n",myTimer.timeMessage,mygps.getGPS);
Nerosho 18:05d5de29511d 116 timer++;
Nerosho 18:05d5de29511d 117 }
Nerosho 18:05d5de29511d 118
Nerosho 18:05d5de29511d 119 if(timer>=WAITTIME) { //落下開始してからTBD秒後whileを抜ける.
Nerosho 18:05d5de29511d 120 fclose(fp);
Nerosho 18:05d5de29511d 121 break;
Nerosho 18:05d5de29511d 122 }
Nerosho 18:05d5de29511d 123
Nerosho 18:05d5de29511d 124 if(val>=1800) {
Nerosho 18:05d5de29511d 125 //timer_rec.stop();
Nerosho 18:05d5de29511d 126 timer_rec.reset();
Nerosho 18:05d5de29511d 127 //timer_rec.start();
Nerosho 18:05d5de29511d 128 val2+=val;
Nerosho 18:05d5de29511d 129 val=0;
Nerosho 18:05d5de29511d 130
Nerosho 18:05d5de29511d 131 }
Nerosho 18:05d5de29511d 132
Nerosho 18:05d5de29511d 133 }
Nerosho 18:05d5de29511d 134
Nerosho 2:d6dc5c2224cc 135
takepiyo 3:4f1bac105598 136 //溶断機構部分
Nerosho 2:d6dc5c2224cc 137
Nerosho 14:a07d2a958617 138 fprintf(fp, "FireStart!\r\n");
Nerosho 14:a07d2a958617 139 MuPort.send("Fire Start!\r\n");
Nerosho 14:a07d2a958617 140
takepiyo 8:6b835a82b1eb 141 FIRE=1;
Nerosho 15:bc013c313ef5 142 myled=1;
takepiyo 8:6b835a82b1eb 143 wait(FIRETIME);//溶断にかかる時間TBD秒
takepiyo 8:6b835a82b1eb 144 FIRE=0;
Nerosho 15:bc013c313ef5 145 myled=0;
Nerosho 15:bc013c313ef5 146
Nerosho 16:917a2c03bd7c 147 /*wait(3);
Nerosho 15:bc013c313ef5 148
Nerosho 14:a07d2a958617 149 FIRE=1;
Nerosho 15:bc013c313ef5 150 myled=1;
Nerosho 14:a07d2a958617 151 wait(3);//溶断にかかる時間TBD秒
Nerosho 14:a07d2a958617 152 FIRE=0;
Nerosho 16:917a2c03bd7c 153 myled=0;*/
Nerosho 14:a07d2a958617 154
Nerosho 14:a07d2a958617 155 fprintf(fp, "FireFinish!\r\n");
Nerosho 14:a07d2a958617 156 MuPort.send("Fire Finish!\r\n");
Nerosho 14:a07d2a958617 157
takepiyo 3:4f1bac105598 158 //溶断機構終わり
Nerosho 0:d0f3991839ec 159
takepiyo 3:4f1bac105598 160
Nerosho 14:a07d2a958617 161 /*******************************************************************************
Nerosho 18:05d5de29511d 162 シェンロン展開
Nerosho 14:a07d2a958617 163 *******************************************************************************/
Nerosho 16:917a2c03bd7c 164 timer=0;
Nerosho 2:d6dc5c2224cc 165
Nerosho 14:a07d2a958617 166 while(1) {
takepiyo 8:6b835a82b1eb 167 myled=0;
takepiyo 8:6b835a82b1eb 168 myled2=1;
Nerosho 14:a07d2a958617 169
Nerosho 16:917a2c03bd7c 170 mygps.getGPGGA();
Nerosho 16:917a2c03bd7c 171 if(mygps.GPSread) {
Nerosho 16:917a2c03bd7c 172 myled=1;
Nerosho 16:917a2c03bd7c 173 val=timer_rec.read();
Nerosho 18:05d5de29511d 174 val3=val+val2;
Nerosho 18:05d5de29511d 175 myTimer.sendMessage(val3);
Nerosho 16:917a2c03bd7c 176 MuPort.send(myTimer.timeMessage);
Nerosho 16:917a2c03bd7c 177 MuPort.send(mygps.getGPS);
Nerosho 16:917a2c03bd7c 178 fprintf(fp, "%s %s\n",myTimer.timeMessage,mygps.getGPS);
Nerosho 16:917a2c03bd7c 179 timer++;
Nerosho 16:917a2c03bd7c 180 }
takepiyo 3:4f1bac105598 181
Nerosho 18:05d5de29511d 182 if(timer>=FALLTIME) { //落下開始してからTBD秒後whileを抜ける.
Nerosho 15:bc013c313ef5 183 fclose(fp);
Nerosho 15:bc013c313ef5 184 break;
Nerosho 15:bc013c313ef5 185 }
Nerosho 2:d6dc5c2224cc 186
Nerosho 18:05d5de29511d 187 if(val>=1800) {
Nerosho 18:05d5de29511d 188 //timer_rec.stop();
Nerosho 18:05d5de29511d 189 timer_rec.reset();
Nerosho 18:05d5de29511d 190 //timer_rec.start();
Nerosho 18:05d5de29511d 191 val2+=val;
Nerosho 18:05d5de29511d 192 val=0;
Nerosho 18:05d5de29511d 193
Nerosho 18:05d5de29511d 194 }
Nerosho 18:05d5de29511d 195
Nerosho 0:d0f3991839ec 196 }
Nerosho 14:a07d2a958617 197
Nerosho 14:a07d2a958617 198
Nerosho 14:a07d2a958617 199 /*******************************************************************************
Nerosho 16:917a2c03bd7c 200 インレット連続閉鎖
Nerosho 14:a07d2a958617 201 *******************************************************************************/
Nerosho 14:a07d2a958617 202
Nerosho 15:bc013c313ef5 203 fp= fopen(fname, "a");
Nerosho 16:917a2c03bd7c 204 FILE* fp2= fopen(fname2, "a");
Nerosho 15:bc013c313ef5 205 val=timer_rec.read();
Nerosho 18:05d5de29511d 206 val3=val+val2;
Nerosho 18:05d5de29511d 207 myTimer.sendMessage(val3);
Nerosho 16:917a2c03bd7c 208 fprintf(fp, "%s ClosingModeStart!\r\n",myTimer.timeMessage);
Nerosho 15:bc013c313ef5 209 MuPort.send(myTimer.timeMessage);
Nerosho 16:917a2c03bd7c 210 MuPort.send("Closing Mode start!\r\n");
Nerosho 14:a07d2a958617 211
Nerosho 14:a07d2a958617 212 timer=0;//モーター時間で止める用
Nerosho 16:917a2c03bd7c 213 timer2=0;
Nerosho 18:05d5de29511d 214 count=0;
Nerosho 14:a07d2a958617 215
Nerosho 14:a07d2a958617 216 while(1) {
Nerosho 15:bc013c313ef5 217 myled=0;
takepiyo 8:6b835a82b1eb 218 myled2=0;
takepiyo 8:6b835a82b1eb 219 myled3=1;
takepiyo 3:4f1bac105598 220
Nerosho 16:917a2c03bd7c 221 mygps.getGPGGA();
Nerosho 17:993f2fcc43df 222
Nerosho 18:05d5de29511d 223 val=timer_rec.read();
Nerosho 18:05d5de29511d 224 val3=val+val2;
Nerosho 18:05d5de29511d 225 myTimer.sendMessage(val3);
Nerosho 17:993f2fcc43df 226 inlet.getvalue1();
Nerosho 17:993f2fcc43df 227 inlet.getvalue2();
Nerosho 17:993f2fcc43df 228 ave_sensor=(inlet.value1+inlet.value2)/2;
Nerosho 18:05d5de29511d 229 //fp2= fopen(fname2, "a");
Nerosho 18:05d5de29511d 230 fprintf(fp2, "%s,%d,sensor1,%f,sensor2,%f,average,%f\n",myTimer.timeMessage,timer2,inlet.value1,inlet.value2,ave_sensor);
Nerosho 18:05d5de29511d 231 //fclose(fp2);
Nerosho 17:993f2fcc43df 232 timer2++;
Nerosho 17:993f2fcc43df 233
Nerosho 16:917a2c03bd7c 234 if(mygps.GPSread) {
Nerosho 16:917a2c03bd7c 235 myled2=1;
Nerosho 16:917a2c03bd7c 236 val=timer_rec.read();
Nerosho 18:05d5de29511d 237 val3=val+val2;
Nerosho 18:05d5de29511d 238 myTimer.sendMessage(val3);
Nerosho 16:917a2c03bd7c 239 MuPort.send(myTimer.timeMessage);
Nerosho 16:917a2c03bd7c 240 MuPort.send(mygps.getGPS);
Nerosho 17:993f2fcc43df 241 snprintf(sensorMessage, 128, "%f", ave_sensor);
Nerosho 17:993f2fcc43df 242 MuPort.send(sensorMessage);
Nerosho 16:917a2c03bd7c 243 fprintf(fp, "%s %s\n",myTimer.timeMessage,mygps.getGPS);
Nerosho 19:75067f4d49b6 244 timer++;
Nerosho 16:917a2c03bd7c 245 }
Nerosho 16:917a2c03bd7c 246
Nerosho 16:917a2c03bd7c 247
Nerosho 18:05d5de29511d 248 if(ave_sensor>THRESHOLID) {
Nerosho 18:05d5de29511d 249 count++;
Nerosho 18:05d5de29511d 250 }
takepiyo 3:4f1bac105598 251
Nerosho 18:05d5de29511d 252 if(count>=SAMPLENUMBER) {
Nerosho 16:917a2c03bd7c 253 val=timer_rec.read();
Nerosho 18:05d5de29511d 254 val3=val+val2;
Nerosho 18:05d5de29511d 255 myTimer.sendMessage(val3);
Nerosho 16:917a2c03bd7c 256 fprintf(fp, "%s Get the rigidity!\r\n",myTimer.timeMessage);
Nerosho 16:917a2c03bd7c 257 MuPort.send(myTimer.timeMessage);
Nerosho 16:917a2c03bd7c 258 MuPort.send("Get the rigidity!\r\n");
Nerosho 16:917a2c03bd7c 259
Nerosho 16:917a2c03bd7c 260 timer=0;//モーター時間で止める用
takepiyo 3:4f1bac105598 261
Nerosho 16:917a2c03bd7c 262 while(1) {
Nerosho 16:917a2c03bd7c 263 mygps.getGPGGA();
Nerosho 17:993f2fcc43df 264
Nerosho 18:05d5de29511d 265 val=timer_rec.read();
Nerosho 18:05d5de29511d 266 val3=val+val2;
Nerosho 18:05d5de29511d 267 myTimer.sendMessage(val3);
Nerosho 17:993f2fcc43df 268 inlet.getvalue1();
Nerosho 17:993f2fcc43df 269 inlet.getvalue2();
Nerosho 17:993f2fcc43df 270 ave_sensor=(inlet.value1+inlet.value2)/2;
Nerosho 18:05d5de29511d 271 //fp2= fopen(fname2, "a");
Nerosho 18:05d5de29511d 272 fprintf(fp2, "%s,%d,sensor1,%f,sensor2,%f,average,%f\n",myTimer.timeMessage,timer2,inlet.value1,inlet.value2,ave_sensor);
Nerosho 18:05d5de29511d 273 //fclose(fp2);
Nerosho 17:993f2fcc43df 274 timer2++;
Nerosho 17:993f2fcc43df 275
Nerosho 16:917a2c03bd7c 276 if(mygps.GPSread) {
Nerosho 16:917a2c03bd7c 277 myled2=1;
Nerosho 16:917a2c03bd7c 278 val=timer_rec.read();
Nerosho 18:05d5de29511d 279 val3=val+val2;
Nerosho 18:05d5de29511d 280 myTimer.sendMessage(val3);
Nerosho 16:917a2c03bd7c 281 MuPort.send(myTimer.timeMessage);
Nerosho 16:917a2c03bd7c 282 MuPort.send(mygps.getGPS);
Nerosho 17:993f2fcc43df 283 snprintf(sensorMessage, 128, "%f", ave_sensor);
Nerosho 17:993f2fcc43df 284 MuPort.send(sensorMessage);
Nerosho 16:917a2c03bd7c 285 fprintf(fp, "%s %s\n",myTimer.timeMessage,mygps.getGPS);
Nerosho 16:917a2c03bd7c 286 timer++;
Nerosho 16:917a2c03bd7c 287 }
Nerosho 16:917a2c03bd7c 288
Nerosho 16:917a2c03bd7c 289
Nerosho 18:05d5de29511d 290 if(timer>=CLOSETIME) {
Nerosho 16:917a2c03bd7c 291 break;
Nerosho 16:917a2c03bd7c 292 }
Nerosho 16:917a2c03bd7c 293
takepiyo 3:4f1bac105598 294 }
Nerosho 15:bc013c313ef5 295
Nerosho 16:917a2c03bd7c 296 inlet.Stop();
Nerosho 16:917a2c03bd7c 297 val=timer_rec.read();
Nerosho 18:05d5de29511d 298 val3=val+val2;
Nerosho 18:05d5de29511d 299 myTimer.sendMessage(val3);
Nerosho 16:917a2c03bd7c 300 fprintf(fp, "%s ClosingModeFinish!\r\n",myTimer.timeMessage);
Nerosho 16:917a2c03bd7c 301 MuPort.send(myTimer.timeMessage);
Nerosho 16:917a2c03bd7c 302 MuPort.send("Closing Mode Finish!\r\n");
Nerosho 16:917a2c03bd7c 303 fclose(fp);
Nerosho 16:917a2c03bd7c 304 fclose(fp2);
Nerosho 16:917a2c03bd7c 305 break;
Nerosho 16:917a2c03bd7c 306
takepiyo 3:4f1bac105598 307 }
Nerosho 19:75067f4d49b6 308
Nerosho 16:917a2c03bd7c 309
Nerosho 18:05d5de29511d 310 if(val>=1800) {
Nerosho 18:05d5de29511d 311 //timer_rec.stop();
Nerosho 18:05d5de29511d 312 timer_rec.reset();
Nerosho 18:05d5de29511d 313 //timer_rec.start();
Nerosho 18:05d5de29511d 314 val2+=val;
Nerosho 18:05d5de29511d 315 val=0;
Nerosho 18:05d5de29511d 316
Nerosho 18:05d5de29511d 317 }
Nerosho 19:75067f4d49b6 318
Nerosho 19:75067f4d49b6 319 if(timer>LIMITTIME) {
Nerosho 19:75067f4d49b6 320 inlet.Stop();
Nerosho 19:75067f4d49b6 321 val=timer_rec.read();
Nerosho 19:75067f4d49b6 322 val3=val+val2;
Nerosho 19:75067f4d49b6 323 myTimer.sendMessage(val3);
Nerosho 19:75067f4d49b6 324 fprintf(fp, "%s ClosingModeFinsh!\r\n",myTimer.timeMessage);
Nerosho 19:75067f4d49b6 325 MuPort.send(myTimer.timeMessage);
Nerosho 19:75067f4d49b6 326 MuPort.send("Closing Mode Finish!\r\n");
Nerosho 19:75067f4d49b6 327 fclose(fp);
Nerosho 19:75067f4d49b6 328 fclose(fp2);
Nerosho 19:75067f4d49b6 329 break;
Nerosho 19:75067f4d49b6 330
Nerosho 19:75067f4d49b6 331 }
Nerosho 18:05d5de29511d 332
Nerosho 16:917a2c03bd7c 333 inlet.Close(1.1);//1より大きい引数にしておけばモーターはずっと回ってる.
Nerosho 16:917a2c03bd7c 334
Nerosho 16:917a2c03bd7c 335 }
Nerosho 16:917a2c03bd7c 336
Nerosho 16:917a2c03bd7c 337 /*******************************************************************************
Nerosho 16:917a2c03bd7c 338 インレットインターバル閉鎖
Nerosho 16:917a2c03bd7c 339 *******************************************************************************/
Nerosho 16:917a2c03bd7c 340
Nerosho 18:05d5de29511d 341 fp= fopen(fname, "a");
Nerosho 18:05d5de29511d 342 fp2= fopen(fname2, "a");
Nerosho 16:917a2c03bd7c 343 val=timer_rec.read();
Nerosho 18:05d5de29511d 344 val3=val+val2;
Nerosho 18:05d5de29511d 345 myTimer.sendMessage(val3);
Nerosho 16:917a2c03bd7c 346 fprintf(fp, "%s IntervalModeStart!\r\n",myTimer.timeMessage);
Nerosho 16:917a2c03bd7c 347 MuPort.send(myTimer.timeMessage);
Nerosho 16:917a2c03bd7c 348 MuPort.send("Interval Mode start!\r\n");
Nerosho 18:05d5de29511d 349 fclose(fp);
Nerosho 16:917a2c03bd7c 350
Nerosho 16:917a2c03bd7c 351 timer=0;//モーター時間で止める用
Nerosho 16:917a2c03bd7c 352 timer3=0;
Nerosho 18:05d5de29511d 353
Nerosho 16:917a2c03bd7c 354
Nerosho 16:917a2c03bd7c 355 while(1) {
Nerosho 16:917a2c03bd7c 356
Nerosho 16:917a2c03bd7c 357 myled=0;
Nerosho 16:917a2c03bd7c 358 myled2=0;
Nerosho 16:917a2c03bd7c 359 myled3=0;
Nerosho 16:917a2c03bd7c 360 myled4=1;
Nerosho 16:917a2c03bd7c 361
Nerosho 16:917a2c03bd7c 362 mygps.getGPGGA();
Nerosho 16:917a2c03bd7c 363
Nerosho 18:05d5de29511d 364 val=timer_rec.read();
Nerosho 18:05d5de29511d 365 val3=val+val2;
Nerosho 18:05d5de29511d 366 myTimer.sendMessage(val3);
Nerosho 16:917a2c03bd7c 367 inlet.getvalue1();
Nerosho 16:917a2c03bd7c 368 inlet.getvalue2();
Nerosho 16:917a2c03bd7c 369 ave_sensor=(inlet.value1+inlet.value2)/2;
Nerosho 16:917a2c03bd7c 370 //fp2= fopen(fname2, "a");
Nerosho 18:05d5de29511d 371 fprintf(fp2, "%s,%d,sensor1,%f,sensor2,%f,average,%f\n",myTimer.timeMessage,timer2,inlet.value1,inlet.value2,ave_sensor);
Nerosho 16:917a2c03bd7c 372 //fclose(fp2);
Nerosho 16:917a2c03bd7c 373 timer2++;
Nerosho 16:917a2c03bd7c 374
Nerosho 17:993f2fcc43df 375 if(mygps.GPSread) {
Nerosho 17:993f2fcc43df 376 myled3=1;
Nerosho 17:993f2fcc43df 377 val=timer_rec.read();
Nerosho 18:05d5de29511d 378 val3=val+val2;
Nerosho 18:05d5de29511d 379 myTimer.sendMessage(val3);
Nerosho 17:993f2fcc43df 380 MuPort.send(myTimer.timeMessage);
Nerosho 17:993f2fcc43df 381 MuPort.send(mygps.getGPS);
Nerosho 18:05d5de29511d 382 snprintf(sensorMessage, 128, "%f\n", ave_sensor);
Nerosho 17:993f2fcc43df 383 MuPort.send(sensorMessage);
Nerosho 17:993f2fcc43df 384 fp= fopen(fname, "a");
Nerosho 17:993f2fcc43df 385 fprintf(fp, "%s %s\n",myTimer.timeMessage,mygps.getGPS);
Nerosho 17:993f2fcc43df 386 fclose(fp);
Nerosho 17:993f2fcc43df 387 fclose(fp2);
Nerosho 17:993f2fcc43df 388 fp2= fopen(fname2, "a");
Nerosho 17:993f2fcc43df 389 timer++;
Nerosho 17:993f2fcc43df 390 timer3++;
Nerosho 17:993f2fcc43df 391 }
Nerosho 17:993f2fcc43df 392
Nerosho 17:993f2fcc43df 393
Nerosho 17:993f2fcc43df 394
Nerosho 18:05d5de29511d 395 if(timer3>=INTERVAL_HIGH) {
Nerosho 16:917a2c03bd7c 396 inlet.Stop();
Nerosho 16:917a2c03bd7c 397 myled=0;
Nerosho 16:917a2c03bd7c 398 myled2=0;
Nerosho 16:917a2c03bd7c 399 myled3=0;
Nerosho 16:917a2c03bd7c 400 myled4=1;
Nerosho 16:917a2c03bd7c 401
Nerosho 16:917a2c03bd7c 402 timer3=0;
Nerosho 16:917a2c03bd7c 403 timer4=0;
Nerosho 16:917a2c03bd7c 404
Nerosho 16:917a2c03bd7c 405 while(1) {
Nerosho 16:917a2c03bd7c 406 mygps.getGPGGA();
Nerosho 16:917a2c03bd7c 407
Nerosho 18:05d5de29511d 408 val=timer_rec.read();
Nerosho 18:05d5de29511d 409 val3=val+val2;
Nerosho 18:05d5de29511d 410 myTimer.sendMessage(val3);
Nerosho 16:917a2c03bd7c 411 inlet.getvalue1();
Nerosho 16:917a2c03bd7c 412 inlet.getvalue2();
Nerosho 16:917a2c03bd7c 413 ave_sensor=(inlet.value1+inlet.value2)/2;
Nerosho 16:917a2c03bd7c 414 //fp2= fopen(fname2, "a");
Nerosho 18:05d5de29511d 415 fprintf(fp2, "%s,%d,sensor1,%f,sensor2,%f,average,%f\n",myTimer.timeMessage,timer2,inlet.value1,inlet.value2,ave_sensor);
Nerosho 16:917a2c03bd7c 416 //fclose(fp2);
Nerosho 16:917a2c03bd7c 417 timer2++;
Nerosho 16:917a2c03bd7c 418
Nerosho 17:993f2fcc43df 419 if(mygps.GPSread) {
Nerosho 17:993f2fcc43df 420 myled3=1;
Nerosho 18:05d5de29511d 421 val=timer_rec.read();
Nerosho 18:05d5de29511d 422 val3=val+val2;
Nerosho 18:05d5de29511d 423 myTimer.sendMessage(val3);
Nerosho 17:993f2fcc43df 424 MuPort.send(myTimer.timeMessage);
Nerosho 17:993f2fcc43df 425 MuPort.send(mygps.getGPS);
Nerosho 18:05d5de29511d 426 snprintf(sensorMessage, 128, "%f\n", ave_sensor);
Nerosho 17:993f2fcc43df 427 MuPort.send(sensorMessage);
Nerosho 17:993f2fcc43df 428 fp= fopen(fname, "a");
Nerosho 17:993f2fcc43df 429 fprintf(fp, "%s %s\n",myTimer.timeMessage,mygps.getGPS);
Nerosho 17:993f2fcc43df 430 fclose(fp);
Nerosho 17:993f2fcc43df 431 fclose(fp2);
Nerosho 17:993f2fcc43df 432 fp2= fopen(fname2, "a");
Nerosho 17:993f2fcc43df 433 timer++;
Nerosho 17:993f2fcc43df 434 timer4++;
Nerosho 17:993f2fcc43df 435 }
Nerosho 17:993f2fcc43df 436
Nerosho 17:993f2fcc43df 437
Nerosho 18:05d5de29511d 438 if(timer4>=INTERVAL_LOW) {
Nerosho 16:917a2c03bd7c 439 break;
Nerosho 16:917a2c03bd7c 440 }
Nerosho 16:917a2c03bd7c 441
Nerosho 16:917a2c03bd7c 442 }
Nerosho 16:917a2c03bd7c 443
Nerosho 16:917a2c03bd7c 444 }
Nerosho 16:917a2c03bd7c 445
Nerosho 18:05d5de29511d 446 if(val>=1800) {
Nerosho 17:993f2fcc43df 447 //timer_rec.stop();
Nerosho 16:917a2c03bd7c 448 timer_rec.reset();
Nerosho 17:993f2fcc43df 449 //timer_rec.start();
Nerosho 16:917a2c03bd7c 450 val2+=val;
Nerosho 16:917a2c03bd7c 451 val=0;
Nerosho 18:05d5de29511d 452
Nerosho 16:917a2c03bd7c 453 }
Nerosho 16:917a2c03bd7c 454
Nerosho 16:917a2c03bd7c 455
Nerosho 18:05d5de29511d 456 if(timer>=INTERVALTIME) {
Nerosho 16:917a2c03bd7c 457 inlet.Stop();
Nerosho 16:917a2c03bd7c 458 val=timer_rec.read();
Nerosho 18:05d5de29511d 459 val3=val+val2;
Nerosho 18:05d5de29511d 460 myTimer.sendMessage(val3);
Nerosho 16:917a2c03bd7c 461 fprintf(fp, "%s IntervalModeFinish!\r\n",myTimer.timeMessage);
Nerosho 16:917a2c03bd7c 462 MuPort.send(myTimer.timeMessage);
Nerosho 16:917a2c03bd7c 463 MuPort.send("Interval Mode finish!\r\n");
Nerosho 16:917a2c03bd7c 464 fclose(fp);
Nerosho 16:917a2c03bd7c 465 fclose(fp2);
Nerosho 15:bc013c313ef5 466 break;
Nerosho 15:bc013c313ef5 467 }
takepiyo 3:4f1bac105598 468
Nerosho 16:917a2c03bd7c 469 inlet.Close(1.1);//1より大きい引数にしておけばモーターはずっと回ってる.
Nerosho 16:917a2c03bd7c 470
takepiyo 3:4f1bac105598 471 }
Nerosho 14:a07d2a958617 472
Nerosho 14:a07d2a958617 473
Nerosho 14:a07d2a958617 474 /*******************************************************************************
Nerosho 14:a07d2a958617 475 待機モード(何もせずGPS信号を発する)
Nerosho 14:a07d2a958617 476 *******************************************************************************/
Nerosho 14:a07d2a958617 477
Nerosho 15:bc013c313ef5 478 fp= fopen(fname, "a");
Nerosho 15:bc013c313ef5 479 val=timer_rec.read();
Nerosho 18:05d5de29511d 480 val3=val+val2;
Nerosho 18:05d5de29511d 481 myTimer.sendMessage(val3);
Nerosho 15:bc013c313ef5 482 fprintf(fp, "%s StandbyModeStart!\r\n",myTimer.timeMessage);
Nerosho 15:bc013c313ef5 483 MuPort.send(myTimer.timeMessage);
Nerosho 14:a07d2a958617 484 MuPort.send("Standby mode start!\r\n");
Nerosho 15:bc013c313ef5 485 fclose(fp);
Nerosho 14:a07d2a958617 486
Nerosho 14:a07d2a958617 487
Nerosho 14:a07d2a958617 488 while(1) {
Nerosho 15:bc013c313ef5 489 myled=0;
Nerosho 15:bc013c313ef5 490 myled2=0;
takepiyo 8:6b835a82b1eb 491 myled3=0;
Nerosho 15:bc013c313ef5 492 myled4=1;
takepiyo 6:b7bf39bc3487 493
Nerosho 16:917a2c03bd7c 494 mygps.getGPGGA();
Nerosho 16:917a2c03bd7c 495 if(mygps.GPSread) {
Nerosho 16:917a2c03bd7c 496 myled3=1;
Nerosho 18:05d5de29511d 497 val=timer_rec.read();
Nerosho 18:05d5de29511d 498 val3=val+val2;
Nerosho 18:05d5de29511d 499 myTimer.sendMessage(val3);
Nerosho 16:917a2c03bd7c 500 MuPort.send(myTimer.timeMessage);
Nerosho 16:917a2c03bd7c 501 MuPort.send(mygps.getGPS);
Nerosho 16:917a2c03bd7c 502 fp= fopen(fname, "a");
Nerosho 16:917a2c03bd7c 503 fprintf(fp, "%s %s\n",myTimer.timeMessage,mygps.getGPS);
Nerosho 16:917a2c03bd7c 504 fclose(fp);
Nerosho 16:917a2c03bd7c 505 //wait(1.0);
Nerosho 16:917a2c03bd7c 506 }
Nerosho 17:993f2fcc43df 507
Nerosho 18:05d5de29511d 508 if(val>=1800) {
Nerosho 17:993f2fcc43df 509 //timer_rec.stop();
Nerosho 16:917a2c03bd7c 510 timer_rec.reset();
Nerosho 17:993f2fcc43df 511 //timer_rec.start();
Nerosho 16:917a2c03bd7c 512 val2+=val;
Nerosho 16:917a2c03bd7c 513 val=0;
Nerosho 16:917a2c03bd7c 514 }
takepiyo 6:b7bf39bc3487 515
takepiyo 6:b7bf39bc3487 516 }
Nerosho 14:a07d2a958617 517
Nerosho 2:d6dc5c2224cc 518 }
Nerosho 2:d6dc5c2224cc 519
Nerosho 2:d6dc5c2224cc 520