SD card demo

Dependencies:   SDFileSystem mbed

Committer:
gauthibit
Date:
Tue Nov 08 10:17:40 2016 +0000
Revision:
0:1a07e19d701d
SD card Demo

Who changed what in which revision?

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