![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
Log data to a micro SD card.
Dependencies: SDFileSystem mbed
Diff: main.cpp
- Revision:
- 0:56d642e39289
- Child:
- 1:c5e56e2580bf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Wed Apr 22 06:57:07 2015 +0000 @@ -0,0 +1,63 @@ +#include "mbed.h" +#include "SDFileSystem.h" + +DigitalIn mybutton(USER_BUTTON); +Serial pc(SERIAL_TX, SERIAL_RX); + +SDFileSystem sd(SPI_MOSI, SPI_MISO, SPI_SCK, SPI_CS, "sd"); +FILE *fp; + +Ticker timer; +static double t; //時間t + +//SDカード内からログ番号の最大値を取得する関数 +int find_last() { + int i, n = 0; + DIR *dp; + struct dirent *dirst; + dp = opendir("/sd/"); + if (!dp){ + printf("Could not open directry\n"); + return -1; + } + while((dirst = readdir(dp)) != NULL) { + if(sscanf(dirst->d_name, "log%03d.csv", &i) == 1 && i>n) { + n = i; + } + } + closedir(dp); + return n; +} + +void Int_Timer() { + //ボタンが押されているかどうかをログする + fprintf(fp, "%.1f,%d\n", t, (int)mybutton); + t += 0.1; +} + +int main() { + char filename[15]; + int n = find_last(); + if(n < 0) return 0; + + //ログ番号を+1してファイルを新規作成 + //ファイル名は"logXXX.csv" + sprintf(filename, "/sd/log%03d.csv", n+1); + fp = fopen(filename, "w"); + + printf("Start writing!\n"); + fprintf(fp, "time,x\n"); + + //0.1s間隔のタイマー割り込み + timer.attach(&Int_Timer, 0.1); + + t = 0.0; + //10.0sで終了 + while(t < 10.0){ + } + + timer.detach(); + fclose(fp); + printf("Finish!\n"); +} + \ No newline at end of file