201708能代のメインマイコンの保存データ送信用プログラム

Dependencies:   MPU6050 mbed MS5607

Committer:
oichan
Date:
Tue Aug 15 11:51:32 2017 +0000
Revision:
3:660279be8484
Parent:
2:1dbaef45ae46
Child:
4:918ea47cc35c
201708????????????????????????

Who changed what in which revision?

UserRevisionLine numberNew contents of line
oichan 3:660279be8484 1
oichan 3:660279be8484 2 /* データ取得&送信するプログラム *
oichan 3:660279be8484 3 * 各データの終わりの印として'$'を送信 *
oichan 3:660279be8484 4 * なぜか割り込みタイマの周期が一定にならない */
oichan 3:660279be8484 5
mbed_official 0:bdbd3d6fc5d5 6 #include "mbed.h"
oichan 3:660279be8484 7 #include "MPU6050.h"
mikawataru 2:1dbaef45ae46 8
oichan 3:660279be8484 9 #define ACC 16384
oichan 3:660279be8484 10 #define BUFFNUM 30 /*受信側のBUFFNUMと同値*/
oichan 3:660279be8484 11 #define CHARANUM 30
oichan 3:660279be8484 12 #define RATE 30.0 /*RATE[Hz]でデータ取得*/
mikawataru 2:1dbaef45ae46 13
oichan 3:660279be8484 14 MPU6050 mpu(p9,p10);
oichan 3:660279be8484 15 Serial subCP(p28, p27);
oichan 3:660279be8484 16 Ticker log_timer;
oichan 3:660279be8484 17 Ticker send_timer;
oichan 3:660279be8484 18 Timer t;
mikawataru 2:1dbaef45ae46 19
oichan 3:660279be8484 20 float Time[2][BUFFNUM] = {};
oichan 3:660279be8484 21 float Data[2][BUFFNUM] = {};
oichan 3:660279be8484 22 char Moji[2][BUFFNUM][CHARANUM] = {};
oichan 3:660279be8484 23 bool Row = false;
oichan 3:660279be8484 24 int8_t Col = 0;
oichan 3:660279be8484 25 int Send_cnt = 0;
oichan 3:660279be8484 26 int Moji_cnt = 0;
mikawataru 2:1dbaef45ae46 27
mikawataru 2:1dbaef45ae46 28 void _log();
oichan 3:660279be8484 29 void _send();
mikawataru 2:1dbaef45ae46 30
oichan 3:660279be8484 31 int main(){
oichan 3:660279be8484 32 t.start();
oichan 3:660279be8484 33 log_timer.attach(_log,1.0/RATE);
oichan 3:660279be8484 34 while(1);
mikawataru 2:1dbaef45ae46 35 }
mikawataru 2:1dbaef45ae46 36
oichan 3:660279be8484 37 /* データ取得 */
oichan 3:660279be8484 38 void _log(){
oichan 3:660279be8484 39 //TODO: 高度データの取得
oichan 3:660279be8484 40 //TODO: 取得する加速度を合成加速度に変更
oichan 3:660279be8484 41 Data[Row][Col] = (float)mpu.getAcceleroRawZ()/ACC;
oichan 3:660279be8484 42 Time[Row][Col] = t.read();
oichan 3:660279be8484 43 Col++;
oichan 3:660279be8484 44 if(Col == BUFFNUM){
oichan 3:660279be8484 45 Col = 0;
oichan 3:660279be8484 46 Row = !Row;
oichan 3:660279be8484 47 send_timer.attach(_send,(BUFFNUM/(CHARANUM*RATE*RATE))*0.8);
oichan 3:660279be8484 48 }
oichan 3:660279be8484 49 }
mikawataru 2:1dbaef45ae46 50
oichan 3:660279be8484 51 void _send(){
oichan 3:660279be8484 52 if(Moji_cnt==0){
oichan 3:660279be8484 53 sprintf(&Moji[Row][Send_cnt][0],"%f, %f",Time[!Row][Send_cnt],Data[!Row][Send_cnt]);
mbed_official 0:bdbd3d6fc5d5 54 }
oichan 3:660279be8484 55 subCP.putc(Moji[Row][Send_cnt][Moji_cnt]);
oichan 3:660279be8484 56 Moji_cnt++;
oichan 3:660279be8484 57 if(Moji_cnt==CHARANUM || Moji[Row][Send_cnt][Moji_cnt]=='\0'){
oichan 3:660279be8484 58 Moji_cnt = 0;
oichan 3:660279be8484 59 subCP.putc('$');
oichan 3:660279be8484 60 Send_cnt++;
oichan 3:660279be8484 61 if(Send_cnt==BUFFNUM){
oichan 3:660279be8484 62 Send_cnt = 0;
oichan 3:660279be8484 63 send_timer.detach();
oichan 3:660279be8484 64 }
oichan 3:660279be8484 65 }
mikawataru 2:1dbaef45ae46 66 }