SD card demo
Dependencies: SDFileSystem mbed
main.cpp@0:1a07e19d701d, 2016-11-08 (annotated)
- Committer:
- gauthibit
- Date:
- Tue Nov 08 10:17:40 2016 +0000
- Revision:
- 0:1a07e19d701d
SD card Demo
Who changed what in which revision?
User | Revision | Line number | New 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 | } |