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

Dependencies:   MPU6050 SDFileSystem mbed

Fork of SDFileSystem_HelloWorld by mbed official

Committer:
oichan
Date:
Sun Dec 24 10:47:14 2017 +0000
Revision:
2:ac793e1667ec
Parent:
0:bdbd3d6fc5d5
SD 100Hz for LPC1768

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 0:bdbd3d6fc5d5 1 #include "mbed.h"
mbed_official 0:bdbd3d6fc5d5 2 #include "SDFileSystem.h"
oichan 2:ac793e1667ec 3 #include "MPU6050.h"
oichan 2:ac793e1667ec 4
oichan 2:ac793e1667ec 5 #define RATE 100 //サンプリングレート[Hz]
oichan 2:ac793e1667ec 6 #define SAVE_NUM 100 //一度に保存するデータ数 SAVE_NUM/RATE [s]ごとに保存する
oichan 2:ac793e1667ec 7
oichan 2:ac793e1667ec 8 SDFileSystem sd(p11, p12, p13, p14, "sd");
oichan 2:ac793e1667ec 9 MPU6050 mpu(p9,p10);
oichan 2:ac793e1667ec 10 Timer jikan;
oichan 2:ac793e1667ec 11 Ticker get_t;
oichan 2:ac793e1667ec 12 Serial pc(USBTX,USBRX);
oichan 2:ac793e1667ec 13 FILE *bp;
oichan 2:ac793e1667ec 14
oichan 2:ac793e1667ec 15 void _getData();
oichan 2:ac793e1667ec 16
oichan 2:ac793e1667ec 17 float Data[2][SAVE_NUM][4]={0};
oichan 2:ac793e1667ec 18 int Data_cnt = 0;
oichan 2:ac793e1667ec 19 bool row;
oichan 2:ac793e1667ec 20
oichan 2:ac793e1667ec 21 int main(){
oichan 2:ac793e1667ec 22 pc.printf("Hello!\r\n");
mbed_official 0:bdbd3d6fc5d5 23 mkdir("/sd/mydir", 0777);
oichan 2:ac793e1667ec 24 bp = fopen("/sd/mydir/data.bin","ab"); //ファイルは作成は時間がかかるため先にやる
oichan 2:ac793e1667ec 25 fclose(bp);
oichan 2:ac793e1667ec 26 jikan.start();
oichan 2:ac793e1667ec 27 get_t.attach(&_getData,1.0/RATE);
oichan 2:ac793e1667ec 28 while(1){
oichan 2:ac793e1667ec 29 if(Data_cnt==SAVE_NUM){
oichan 2:ac793e1667ec 30 Data_cnt=0;
oichan 2:ac793e1667ec 31 row = !row;
oichan 2:ac793e1667ec 32 bp = fopen("/sd/mydir/data.bin","ab");
oichan 2:ac793e1667ec 33 fwrite(&Data[!row][0][0],sizeof(float),4*SAVE_NUM,bp);
oichan 2:ac793e1667ec 34 fclose(bp);
oichan 2:ac793e1667ec 35 }
mbed_official 0:bdbd3d6fc5d5 36 }
oichan 2:ac793e1667ec 37 return 0;
mbed_official 0:bdbd3d6fc5d5 38 }
oichan 2:ac793e1667ec 39
oichan 2:ac793e1667ec 40 void _getData(){
oichan 2:ac793e1667ec 41 Data[row][Data_cnt][0] = jikan.read();
oichan 2:ac793e1667ec 42 mpu.getAccelero(&Data[row][Data_cnt][1]);
oichan 2:ac793e1667ec 43 Data_cnt++;
oichan 2:ac793e1667ec 44 }