Log data to a micro SD card.
Dependencies: SDFileSystem mbed
Diff: main.cpp
- Revision:
- 1:c5e56e2580bf
- Parent:
- 0:56d642e39289
--- a/main.cpp Wed Apr 22 06:57:07 2015 +0000 +++ b/main.cpp Mon May 04 07:10:55 2015 +0000 @@ -1,63 +1,42 @@ #include "mbed.h" -#include "SDFileSystem.h" +#include "Log.h" DigitalIn mybutton(USER_BUTTON); Serial pc(SERIAL_TX, SERIAL_RX); -SDFileSystem sd(SPI_MOSI, SPI_MISO, SPI_SCK, SPI_CS, "sd"); -FILE *fp; +Log logger(SERIAL_TX, SERIAL_RX, SPI_MOSI, SPI_MISO, SPI_SCK, SPI_CS, "sd"); 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; -} +void Int_Timer(); +static double t; 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間隔のタイマー割り込み + /** ログのタイトル行 **/ + char* str="time,button\n"; + if(!(logger.initialize_sdlog(str))){ + return 0; + } + +// printf("Start!\n"); timer.attach(&Int_Timer, 0.1); t = 0.0; - //10.0sで終了 - while(t < 10.0){ + while(1){ + if(t > 10.0){ + timer.detach(); + break; + } } - timer.detach(); - fclose(fp); + logger.close(); printf("Finish!\n"); } - \ No newline at end of file + + +void Int_Timer() { + char buf[20]; + /** ログをとりたい値を記入 **/ + sprintf(buf, "%.1f,%d\n", t, (int)mybutton); + logger.puts(buf); + t += 0.1; +} \ No newline at end of file