201708能代のメインマイコンの保存データ送信用プログラム(データ送信部分を繰り返しタイマー割り込みにした)
Dependencies: MPU6050 MS5607 mbed
Fork of data_sousin by
main.cpp
- Committer:
- oichan
- Date:
- 2017-08-18
- Revision:
- 7:33f48fc8fe7b
- Parent:
- 6:69546ac823b1
File content as of revision 7:33f48fc8fe7b:
/*********************************************************** データ取得&送信するプログラム 各データの終わりの印として'$'を送信 送信データが時間順にならないため、検証時は並び替えが必要 ************************************************************/ #include "mbed.h" #include "MPU6050.h" #include "MS5607I2C.h" #define ACC 16384 #define BUFFNUM 50 /*受信側のBUFFNUMと同値*/ #define CHARANUM 50 #define RATE 50.0 /*RATE[Hz]でデータ取得*/ MPU6050 mpu(p9,p10); MS5607I2C ms5607(p9,p10,false); Serial subCP(p28, p27); Ticker log_timer; Ticker send_timer; Timer t; 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; void _log(); void _send(); int main(){ t.start(); log_timer.attach(_log,1.0/RATE); send_timer.attach(_send,0.0001); while(1); } /* データ取得関数 */ void _log(){ 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; Row = !Row; } } /* データ送信関数 */ void _send(){ if(Moji_cnt==0){ 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++; if(Moji_cnt==CHARANUM || Moji[Row][Send_cnt][Moji_cnt]=='\0'){ Moji_cnt = 0; subCP.putc('$'); Send_cnt++; if(Send_cnt==BUFFNUM){ Send_cnt = 0; } } }