temperature logging

Dependencies:   SDFileSystem mbed

Revision:
0:ebeab79bcd5f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Sat Jan 30 07:45:21 2016 +0000
@@ -0,0 +1,71 @@
+// Temperature logging demo - record temperatures to SD card and print them to
+// the console every 10 seconds
+
+#include "mbed.h"
+#include "SDFileSystem.h"
+
+// Analog input (pin 15)
+AnalogIn ain(p15);
+
+// USB serial (tx, rx)
+Serial pc(USBTX, USBRX);
+
+// SD card (SPI pins)
+SDFileSystem sd(p5, p6, p7, p8, "sd");
+
+// Timer for our timestamps
+Timer timer;
+
+int main() {
+
+    FILE *file;
+    float voltage_in;
+    float degrees_c;
+    int i;
+    int c;
+
+    // Start our timer
+    timer.start();
+
+    // Open file for writing
+    file = fopen("/sd/temp_data.txt", "w");
+    if ( file == NULL ) {
+        error("ERROR: Could not open file for writing!\n\r");
+        return -1;
+    }
+
+    // Tell the user we need to wait while we collect some data
+    pc.printf("\nCollecting data (Do not remove SD Card!) ...\n\r");
+
+    // Collect temperatures with timestamps every second
+    for(i = 0; i < 10; i++) {
+        voltage_in = ain * 3.3;
+        degrees_c = (voltage_in - 0.5) * 100.0;
+        fprintf(file, "%2.2fs: %3.1f deg C\n\r", timer.read(), degrees_c);
+        wait(1);
+    }
+
+    // Close file and re-open it for reading
+    fclose(file);
+    file = fopen("/sd/temp_data.txt", "r");
+    if ( file == NULL ) {
+        error("ERROR: Could not open file for reading!\n\r");
+        return -1;
+    }
+
+    // Print results to console
+    pc.printf("Temperature data:\n\r");
+    while(1) {
+       c = fgetc(file);
+       if ( c == EOF ) {
+           break;
+       }
+       pc.putc(c);
+    }
+
+    // Close the file and finish
+    fclose(file);
+    pc.printf("Done! Safe to remove SD card\n\r");
+
+    return 0;
+}