This program is for Cansat made with BreadBoard which have pressure sensor LPS331. This program is based on http://mbed.org/users/nyamfg/code/LPS331_HelloWorld/
Diff: main.cpp
- Revision:
- 12:6b5035346d43
- Parent:
- 11:3342540c22d8
--- a/main.cpp Fri Sep 19 09:39:03 2014 +0000 +++ b/main.cpp Fri Sep 19 11:28:40 2014 +0000 @@ -7,8 +7,8 @@ #define TEMP 20 //気温(度) DigitalOut myled(LED1); -DigitalOut JPlow(p5); // p6ピンでLowを検出させるために使用。隣同士(p5,p6)のピンをショートさせるとログ出力停止 -DigitalIn JP(p6); +DigitalOut JPlow(p5); // p6ピンでLowを検出させるために使用 +DigitalIn JP(p6); // p5とp6のピンを接続するとログ出力停止 LocalFileSystem local("local"); Serial telem(p13,p14); @@ -27,19 +27,22 @@ JPlow = 0; JP.mode(PullUp); + // 気圧センサーの初期化------------------------------------------ lps331.setResolution(LPS331_I2C_PRESSURE_AVG_512, LPS331_I2C_TEMP_AVG_128); lps331.setDataRate(LPS331_I2C_DATARATE_7HZ); // 7Hz(1秒間に7回更新) lps331.setActive(true); // 動作開始 + // ファイルにデータの区切り用メッセージを出力 ----------------------- FILE *fp = fopen("/local/data.txt", "a"); // 「追記」でファイルを開く fprintf(fp,"BBsat start. **********\r\n"); // fprintf()は、ファイルに文字を出力 fclose(fp); + // テレメトリにデータの区切り用メッセージを出力 --------------------- telem.printf("BBsat start. **********\r\n"); // テレメトリ用出力 - t.start(); + t.start(); // 起動からの時間を測るために時計をスタート - // 地面の高度を求める + // 地面の高度を求める -------------------------------------------- for(i=0;i<GROUND_AVE_NUM;i++) { pres = lps331.getPressure(); // 気圧 ground_alti += lps331.getAltitude(P0, TEMP, pres); @@ -47,28 +50,35 @@ } ground_alti = ground_alti / GROUND_AVE_NUM; + // 高度を繰り返し計測する ----------------------------------------- while(1) { int ms=0; // リセットからの経過時間(単位:ミリ秒(MilliSecond) - float altitude; // 高度 + float altitude; // 高度 pres=lps331.getPressure(); // 気圧 temp=lps331.getTemperature(); // 気温 - // 高度算出 + // 気圧から高度を求める --------------------------------------- altitude = lps331.getAltitude(P0, TEMP, pres); + // 気圧の記録を停止するかをチェック ----------------------------- if(JP==0) { // JPが0(GND)だったら、 break; //whileのループを終了 } ms = t.read_ms(); //現在時刻を取得 + // ファイルに記録 --------------------------------------------- FILE *fp = fopen("/local/data.txt", "a"); fprintf(fp, "%10d,%6.2f,%4.1f %5.1f \r\n", ms, pres, temp, altitude); // 時刻,気圧,気温,高度を出力 - printf( "%10d,%6.2f,%4.1f,Ground:%5.1f altitude:%5.1f Diff%5.1f \r\n", ms, pres, temp, ground_alti, altitude, altitude-ground_alti); + printf( "%10d,%6.2f,%4.1f,Ground:%5.1f altitude:%5.1f Diff%5.1f \r\n", + ms, pres, temp, ground_alti, altitude, altitude-ground_alti); fclose(fp); + // 高度のみテレメトリ出力 --------------------------------------- telem.printf("%5.1f\n", altitude-ground_alti); // 高度を出力 - wait(0.05); // LED点滅 + + // 動作確認用 LED点滅 ----------------------------------------- + wait(0.05); // myled = 1; wait(0.05); myled = 0;