smd.iotkit1.ch / Mbed 2 deprecated SDCardIO

Dependencies:   SDFileSystem mbed

Committer:
stefan1691
Date:
Fri May 01 12:39:13 2015 +0000
Revision:
0:284d0767f08c
Beispiel SD Card I/O

Who changed what in which revision?

UserRevisionLine numberNew contents of line
stefan1691 0:284d0767f08c 1 /** Beispiel SD Card I/O
stefan1691 0:284d0767f08c 2 */
stefan1691 0:284d0767f08c 3 #include "mbed.h"
stefan1691 0:284d0767f08c 4 #include "SDFileSystem.h"
stefan1691 0:284d0767f08c 5
stefan1691 0:284d0767f08c 6 // Standard SD Card Slot auf FRDM-K64F Board
stefan1691 0:284d0767f08c 7 SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd"); // MOSI, MISO, SCK, CS
stefan1691 0:284d0767f08c 8
stefan1691 0:284d0767f08c 9 // File I/O
stefan1691 0:284d0767f08c 10 FILE *fp;
stefan1691 0:284d0767f08c 11
stefan1691 0:284d0767f08c 12 // Sensor
stefan1691 0:284d0767f08c 13 AnalogIn poti( A0 );
stefan1691 0:284d0767f08c 14 char filename[] = "/sd/poti.txt";
stefan1691 0:284d0767f08c 15
stefan1691 0:284d0767f08c 16 /**
stefan1691 0:284d0767f08c 17 * Sensordaten schreiben, bzw. in Datei anfuegen
stefan1691 0:284d0767f08c 18 * @param name Name Sensor
stefan1691 0:284d0767f08c 19 * @param value Sensorwert
stefan1691 0:284d0767f08c 20 * @return -1 bei Fehler
stefan1691 0:284d0767f08c 21 */
stefan1691 0:284d0767f08c 22 int writeSensorData( char name[], float value )
stefan1691 0:284d0767f08c 23 {
stefan1691 0:284d0767f08c 24 // Datei oeffen und anfuegen, Alternative "w" fuer neu schreiben.
stefan1691 0:284d0767f08c 25 fp = fopen( name, "a" );
stefan1691 0:284d0767f08c 26
stefan1691 0:284d0767f08c 27 // Fehler?
stefan1691 0:284d0767f08c 28 if (fp == NULL)
stefan1691 0:284d0767f08c 29 return ( -1 );
stefan1691 0:284d0767f08c 30
stefan1691 0:284d0767f08c 31 fprintf( fp, "%f\n", value );
stefan1691 0:284d0767f08c 32 printf( "write %s: %f\n", name, value );
stefan1691 0:284d0767f08c 33 fclose ( fp );
stefan1691 0:284d0767f08c 34 return ( 0 );
stefan1691 0:284d0767f08c 35 }
stefan1691 0:284d0767f08c 36
stefan1691 0:284d0767f08c 37 /**
stefan1691 0:284d0767f08c 38 * Sensordaten lesen
stefan1691 0:284d0767f08c 39 * @param name Name Sensor
stefan1691 0:284d0767f08c 40 * @return -1 bei Fehler
stefan1691 0:284d0767f08c 41 */
stefan1691 0:284d0767f08c 42 int readSensorData( char name[] )
stefan1691 0:284d0767f08c 43 {
stefan1691 0:284d0767f08c 44 fp = fopen( name, "r");
stefan1691 0:284d0767f08c 45
stefan1691 0:284d0767f08c 46 // Fehler?
stefan1691 0:284d0767f08c 47 if (fp == NULL)
stefan1691 0:284d0767f08c 48 return ( -1 );
stefan1691 0:284d0767f08c 49
stefan1691 0:284d0767f08c 50 float value;
stefan1691 0:284d0767f08c 51 while ( fscanf( fp, "%f", &value ) > 0 )
stefan1691 0:284d0767f08c 52 printf( "read - %s: %f\n", name, value );
stefan1691 0:284d0767f08c 53
stefan1691 0:284d0767f08c 54 fclose ( fp );
stefan1691 0:284d0767f08c 55 return ( 0 );
stefan1691 0:284d0767f08c 56 }
stefan1691 0:284d0767f08c 57
stefan1691 0:284d0767f08c 58 /** Hauptprogramm */
stefan1691 0:284d0767f08c 59 int main()
stefan1691 0:284d0767f08c 60 {
stefan1691 0:284d0767f08c 61 printf("SD Card I/O \n");
stefan1691 0:284d0767f08c 62 while ( 1 )
stefan1691 0:284d0767f08c 63 {
stefan1691 0:284d0767f08c 64 // 10 x Sensordaten schreiben
stefan1691 0:284d0767f08c 65 for ( int i = 0; i < 10; i++ )
stefan1691 0:284d0767f08c 66 {
stefan1691 0:284d0767f08c 67 writeSensorData( filename, poti.read() );
stefan1691 0:284d0767f08c 68 wait ( 1.0f );
stefan1691 0:284d0767f08c 69 }
stefan1691 0:284d0767f08c 70
stefan1691 0:284d0767f08c 71 // Sensordaten lesen
stefan1691 0:284d0767f08c 72 readSensorData( filename );
stefan1691 0:284d0767f08c 73 wait ( 1.0f );
stefan1691 0:284d0767f08c 74 remove( filename );
stefan1691 0:284d0767f08c 75 }
stefan1691 0:284d0767f08c 76 }