![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
201708能代のメインマイコンの保存データ送信用プログラム(データ送信部分を繰り返しタイマー割り込みにした)
Dependencies: MPU6050 MS5607 mbed
Fork of data_sousin by
Diff: main.cpp
- Revision:
- 5:a81dd9b6962a
- Parent:
- 4:918ea47cc35c
- Child:
- 6:69546ac823b1
diff -r 918ea47cc35c -r a81dd9b6962a main.cpp --- a/main.cpp Wed Aug 16 08:46:37 2017 +0000 +++ b/main.cpp Wed Aug 16 11:53:05 2017 +0000 @@ -1,29 +1,35 @@ -/********************************************************** +/*********************************************************** データ取得&送信するプログラム 各データの終わりの印として'$'を送信 ************************************************************/ +//TODO: 30分以上の動作試験 + #include "mbed.h" #include "MPU6050.h" +#include "MS5607I2C.h" #define ACC 16384 #define BUFFNUM 100 /*受信側のBUFFNUMと同値*/ -#define CHARANUM 30 +#define CHARANUM 50 #define RATE 100.0 /*RATE[Hz]でデータ取得*/ + MPU6050 mpu(p9,p10); +MS5607I2C ms5607(p9,p10,false); Serial subCP(p28, p27); Ticker log_timer; Timer t; -float Time[2][BUFFNUM] = {}; -float Data[2][BUFFNUM] = {}; -char Moji[2][BUFFNUM][CHARANUM] = {}; -bool Row = false; +float Time[2][BUFFNUM] = {}; +float Acc[2][BUFFNUM] = {}; +float Alt[2][BUFFNUM] = {}; +char Moji[2][BUFFNUM][CHARANUM] = {}; +bool Row = false; int8_t Col = 0; -int Send_cnt = 0; -int Moji_cnt = 0; +int Send_cnt = 0; +int Moji_cnt = 0; void _log(); @@ -32,7 +38,7 @@ log_timer.attach(_log,1.0/RATE); while(1){ if(Moji_cnt==0){ - sprintf(&Moji[Row][Send_cnt][0],"%f, %f",Time[!Row][Send_cnt],Data[!Row][Send_cnt]); + sprintf(&Moji[Row][Send_cnt][0],"%f, %f, %f",Time[!Row][Send_cnt],Acc[!Row][Send_cnt],Alt[!Row][Send_cnt]); } subCP.putc(Moji[Row][Send_cnt][Moji_cnt]); Moji_cnt++; @@ -49,10 +55,12 @@ /* データ取得関数 */ void _log(){ - //TODO: 高度データの取得 - //TODO: 取得する加速度を合成加速度に変更 - Data[Row][Col] = (float)mpu.getAcceleroRawZ()/ACC; + mpu.getAccelero(&Acc[Row][Col]); + Alt[Row][Col] = ms5607.getAltitude(); Time[Row][Col] = t.read(); + if(Time[Row][Col]>=1800){ + t.reset(); + } Col++; if(Col == BUFFNUM){ Col = 0;