temperature logging

Dependencies:   SDFileSystem mbed

Committer:
wye11
Date:
Sat Jan 30 07:45:21 2016 +0000
Revision:
0:ebeab79bcd5f
temperature logging;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
wye11 0:ebeab79bcd5f 1 // Temperature logging demo - record temperatures to SD card and print them to
wye11 0:ebeab79bcd5f 2 // the console every 10 seconds
wye11 0:ebeab79bcd5f 3
wye11 0:ebeab79bcd5f 4 #include "mbed.h"
wye11 0:ebeab79bcd5f 5 #include "SDFileSystem.h"
wye11 0:ebeab79bcd5f 6
wye11 0:ebeab79bcd5f 7 // Analog input (pin 15)
wye11 0:ebeab79bcd5f 8 AnalogIn ain(p15);
wye11 0:ebeab79bcd5f 9
wye11 0:ebeab79bcd5f 10 // USB serial (tx, rx)
wye11 0:ebeab79bcd5f 11 Serial pc(USBTX, USBRX);
wye11 0:ebeab79bcd5f 12
wye11 0:ebeab79bcd5f 13 // SD card (SPI pins)
wye11 0:ebeab79bcd5f 14 SDFileSystem sd(p5, p6, p7, p8, "sd");
wye11 0:ebeab79bcd5f 15
wye11 0:ebeab79bcd5f 16 // Timer for our timestamps
wye11 0:ebeab79bcd5f 17 Timer timer;
wye11 0:ebeab79bcd5f 18
wye11 0:ebeab79bcd5f 19 int main() {
wye11 0:ebeab79bcd5f 20
wye11 0:ebeab79bcd5f 21 FILE *file;
wye11 0:ebeab79bcd5f 22 float voltage_in;
wye11 0:ebeab79bcd5f 23 float degrees_c;
wye11 0:ebeab79bcd5f 24 int i;
wye11 0:ebeab79bcd5f 25 int c;
wye11 0:ebeab79bcd5f 26
wye11 0:ebeab79bcd5f 27 // Start our timer
wye11 0:ebeab79bcd5f 28 timer.start();
wye11 0:ebeab79bcd5f 29
wye11 0:ebeab79bcd5f 30 // Open file for writing
wye11 0:ebeab79bcd5f 31 file = fopen("/sd/temp_data.txt", "w");
wye11 0:ebeab79bcd5f 32 if ( file == NULL ) {
wye11 0:ebeab79bcd5f 33 error("ERROR: Could not open file for writing!\n\r");
wye11 0:ebeab79bcd5f 34 return -1;
wye11 0:ebeab79bcd5f 35 }
wye11 0:ebeab79bcd5f 36
wye11 0:ebeab79bcd5f 37 // Tell the user we need to wait while we collect some data
wye11 0:ebeab79bcd5f 38 pc.printf("\nCollecting data (Do not remove SD Card!) ...\n\r");
wye11 0:ebeab79bcd5f 39
wye11 0:ebeab79bcd5f 40 // Collect temperatures with timestamps every second
wye11 0:ebeab79bcd5f 41 for(i = 0; i < 10; i++) {
wye11 0:ebeab79bcd5f 42 voltage_in = ain * 3.3;
wye11 0:ebeab79bcd5f 43 degrees_c = (voltage_in - 0.5) * 100.0;
wye11 0:ebeab79bcd5f 44 fprintf(file, "%2.2fs: %3.1f deg C\n\r", timer.read(), degrees_c);
wye11 0:ebeab79bcd5f 45 wait(1);
wye11 0:ebeab79bcd5f 46 }
wye11 0:ebeab79bcd5f 47
wye11 0:ebeab79bcd5f 48 // Close file and re-open it for reading
wye11 0:ebeab79bcd5f 49 fclose(file);
wye11 0:ebeab79bcd5f 50 file = fopen("/sd/temp_data.txt", "r");
wye11 0:ebeab79bcd5f 51 if ( file == NULL ) {
wye11 0:ebeab79bcd5f 52 error("ERROR: Could not open file for reading!\n\r");
wye11 0:ebeab79bcd5f 53 return -1;
wye11 0:ebeab79bcd5f 54 }
wye11 0:ebeab79bcd5f 55
wye11 0:ebeab79bcd5f 56 // Print results to console
wye11 0:ebeab79bcd5f 57 pc.printf("Temperature data:\n\r");
wye11 0:ebeab79bcd5f 58 while(1) {
wye11 0:ebeab79bcd5f 59 c = fgetc(file);
wye11 0:ebeab79bcd5f 60 if ( c == EOF ) {
wye11 0:ebeab79bcd5f 61 break;
wye11 0:ebeab79bcd5f 62 }
wye11 0:ebeab79bcd5f 63 pc.putc(c);
wye11 0:ebeab79bcd5f 64 }
wye11 0:ebeab79bcd5f 65
wye11 0:ebeab79bcd5f 66 // Close the file and finish
wye11 0:ebeab79bcd5f 67 fclose(file);
wye11 0:ebeab79bcd5f 68 pc.printf("Done! Safe to remove SD card\n\r");
wye11 0:ebeab79bcd5f 69
wye11 0:ebeab79bcd5f 70 return 0;
wye11 0:ebeab79bcd5f 71 }