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

Dependencies:   MPU6050 MS5607 mbed

Fork of data_sousin by kohei oikawa

main.cpp

Committer:
oichan
Date:
2017-08-16
Revision:
4:918ea47cc35c
Parent:
3:660279be8484
Child:
5:a81dd9b6962a

File content as of revision 4:918ea47cc35c:


/**********************************************************
    データ取得&送信するプログラム
    各データの終わりの印として'$'を送信
************************************************************/

#include "mbed.h"
#include "MPU6050.h"

#define ACC 16384
#define BUFFNUM 100  /*受信側のBUFFNUMと同値*/
#define CHARANUM 30
#define RATE 100.0   /*RATE[Hz]でデータ取得*/

MPU6050 mpu(p9,p10);
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;
int8_t Col = 0;
int Send_cnt = 0;
int Moji_cnt = 0;

void _log();

int main(){
    t.start();
    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]);
        }
        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;
            }
        }
    }
}

/*  データ取得関数   */
void _log(){
    //TODO: 高度データの取得
    //TODO: 取得する加速度を合成加速度に変更
    Data[Row][Col] = (float)mpu.getAcceleroRawZ()/ACC;
    Time[Row][Col] = t.read();
    Col++;
    if(Col == BUFFNUM){
        Col = 0;
        Row = !Row;
    }
}