201708能代のメインマイコンの保存データ送信用プログラム(データ送信部分を繰り返しタイマー割り込みにした)

Dependencies:   MPU6050 MS5607 mbed

Fork of data_sousin by kohei oikawa

Committer:
oichan
Date:
Wed Aug 16 12:05:21 2017 +0000
Revision:
6:69546ac823b1
Parent:
5:a81dd9b6962a
Child:
7:33f48fc8fe7b
fixed a little

Who changed what in which revision?

UserRevisionLine numberNew contents of line
oichan 3:660279be8484 1
oichan 5:a81dd9b6962a 2 /***********************************************************
oichan 4:918ea47cc35c 3 データ取得&送信するプログラム
oichan 4:918ea47cc35c 4 各データの終わりの印として'$'を送信
oichan 6:69546ac823b1 5 送信データが時間順にならないため、検証時は並び替えが必要
oichan 4:918ea47cc35c 6 ************************************************************/
oichan 3:660279be8484 7
oichan 5:a81dd9b6962a 8 //TODO: 30分以上の動作試験
oichan 5:a81dd9b6962a 9
mbed_official 0:bdbd3d6fc5d5 10 #include "mbed.h"
oichan 3:660279be8484 11 #include "MPU6050.h"
oichan 5:a81dd9b6962a 12 #include "MS5607I2C.h"
mikawataru 2:1dbaef45ae46 13
oichan 3:660279be8484 14 #define ACC 16384
oichan 6:69546ac823b1 15 #define BUFFNUM 50 /*受信側のBUFFNUMと同値*/
oichan 5:a81dd9b6962a 16 #define CHARANUM 50
oichan 6:69546ac823b1 17 #define RATE 50.0 /*RATE[Hz]でデータ取得*/
mikawataru 2:1dbaef45ae46 18
oichan 5:a81dd9b6962a 19
oichan 3:660279be8484 20 MPU6050 mpu(p9,p10);
oichan 5:a81dd9b6962a 21 MS5607I2C ms5607(p9,p10,false);
oichan 3:660279be8484 22 Serial subCP(p28, p27);
oichan 3:660279be8484 23 Ticker log_timer;
oichan 3:660279be8484 24 Timer t;
mikawataru 2:1dbaef45ae46 25
oichan 5:a81dd9b6962a 26 float Time[2][BUFFNUM] = {};
oichan 5:a81dd9b6962a 27 float Acc[2][BUFFNUM] = {};
oichan 5:a81dd9b6962a 28 float Alt[2][BUFFNUM] = {};
oichan 5:a81dd9b6962a 29 char Moji[2][BUFFNUM][CHARANUM] = {};
oichan 5:a81dd9b6962a 30 bool Row = false;
oichan 3:660279be8484 31 int8_t Col = 0;
oichan 5:a81dd9b6962a 32 int Send_cnt = 0;
oichan 5:a81dd9b6962a 33 int Moji_cnt = 0;
mikawataru 2:1dbaef45ae46 34
mikawataru 2:1dbaef45ae46 35 void _log();
mikawataru 2:1dbaef45ae46 36
oichan 3:660279be8484 37 int main(){
oichan 3:660279be8484 38 t.start();
oichan 3:660279be8484 39 log_timer.attach(_log,1.0/RATE);
oichan 4:918ea47cc35c 40 while(1){
oichan 4:918ea47cc35c 41 if(Moji_cnt==0){
oichan 5:a81dd9b6962a 42 sprintf(&Moji[Row][Send_cnt][0],"%f, %f, %f",Time[!Row][Send_cnt],Acc[!Row][Send_cnt],Alt[!Row][Send_cnt]);
oichan 4:918ea47cc35c 43 }
oichan 4:918ea47cc35c 44 subCP.putc(Moji[Row][Send_cnt][Moji_cnt]);
oichan 4:918ea47cc35c 45 Moji_cnt++;
oichan 4:918ea47cc35c 46 if(Moji_cnt==CHARANUM || Moji[Row][Send_cnt][Moji_cnt]=='\0'){
oichan 4:918ea47cc35c 47 Moji_cnt = 0;
oichan 4:918ea47cc35c 48 subCP.putc('$');
oichan 4:918ea47cc35c 49 Send_cnt++;
oichan 4:918ea47cc35c 50 if(Send_cnt==BUFFNUM){
oichan 4:918ea47cc35c 51 Send_cnt = 0;
oichan 4:918ea47cc35c 52 }
oichan 4:918ea47cc35c 53 }
oichan 4:918ea47cc35c 54 }
mikawataru 2:1dbaef45ae46 55 }
mikawataru 2:1dbaef45ae46 56
oichan 4:918ea47cc35c 57 /* データ取得関数 */
oichan 3:660279be8484 58 void _log(){
oichan 5:a81dd9b6962a 59 mpu.getAccelero(&Acc[Row][Col]);
oichan 5:a81dd9b6962a 60 Alt[Row][Col] = ms5607.getAltitude();
oichan 3:660279be8484 61 Time[Row][Col] = t.read();
oichan 5:a81dd9b6962a 62 if(Time[Row][Col]>=1800){
oichan 5:a81dd9b6962a 63 t.reset();
oichan 5:a81dd9b6962a 64 }
oichan 3:660279be8484 65 Col++;
oichan 3:660279be8484 66 if(Col == BUFFNUM){
oichan 3:660279be8484 67 Col = 0;
oichan 3:660279be8484 68 Row = !Row;
oichan 3:660279be8484 69 }
oichan 3:660279be8484 70 }
mikawataru 2:1dbaef45ae46 71