加速度を100HzでSDに保存するプログラム

Dependencies:   MPU6050 SDFileSystem mbed

Fork of SDFileSystem_HelloWorld by mbed official

main.cpp

Committer:
oichan
Date:
2017-12-24
Revision:
2:ac793e1667ec
Parent:
0:bdbd3d6fc5d5

File content as of revision 2:ac793e1667ec:

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

#define RATE        100    //サンプリングレート[Hz]
#define SAVE_NUM    100     //一度に保存するデータ数   SAVE_NUM/RATE [s]ごとに保存する

SDFileSystem    sd(p11, p12, p13, p14, "sd");
MPU6050         mpu(p9,p10);
Timer           jikan;
Ticker          get_t;
Serial          pc(USBTX,USBRX);
FILE            *bp;

void _getData();

float   Data[2][SAVE_NUM][4]={0};
int     Data_cnt = 0;
bool    row;

int main(){
    pc.printf("Hello!\r\n");
    mkdir("/sd/mydir", 0777);
    bp = fopen("/sd/mydir/data.bin","ab");  //ファイルは作成は時間がかかるため先にやる
    fclose(bp);
    jikan.start();
    get_t.attach(&_getData,1.0/RATE);
    while(1){
        if(Data_cnt==SAVE_NUM){
            Data_cnt=0;
            row = !row;
            bp = fopen("/sd/mydir/data.bin","ab");
            fwrite(&Data[!row][0][0],sizeof(float),4*SAVE_NUM,bp);
            fclose(bp);
        }
    }
    return 0;
}

void _getData(){
    Data[row][Data_cnt][0] = jikan.read();
    mpu.getAccelero(&Data[row][Data_cnt][1]);
    Data_cnt++;
}