Log data to a micro SD card.
Dependencies: SDFileSystem mbed
Revision 0:56d642e39289, committed 2015-04-22
- Comitter:
- onaka
- Date:
- Wed Apr 22 06:57:07 2015 +0000
- Child:
- 1:c5e56e2580bf
- Commit message:
- Datalogger
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/SDFileSystem.lib Wed Apr 22 06:57:07 2015 +0000 @@ -0,0 +1,1 @@ +http://developer.mbed.org/teams/mbed/code/SDFileSystem/#7b35d1709458
--- /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
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Wed Apr 22 06:57:07 2015 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/433970e64889 \ No newline at end of file