ANALOG READ AND STORE IN FILE Simple example program to read 100 analog samples at half second intervals and store them in a local file.
main.cpp@0:11245efb9ab9, 2010-07-14 (annotated)
- Committer:
- YouTahDoug
- Date:
- Wed Jul 14 15:55:12 2010 +0000
- Revision:
- 0:11245efb9ab9
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
YouTahDoug | 0:11245efb9ab9 | 1 | //----------------------------------------------------------------------------- |
YouTahDoug | 0:11245efb9ab9 | 2 | // EXAMPLE: ANALOG READ AND STORE IN FILE |
YouTahDoug | 0:11245efb9ab9 | 3 | // Simple example program to read 100 analog samples at half second intervals. |
YouTahDoug | 0:11245efb9ab9 | 4 | // The program stores all 100 values and marks each sample as either |
YouTahDoug | 0:11245efb9ab9 | 5 | // "above" or "below" the chosen threshold of 0.6. The values are |
YouTahDoug | 0:11245efb9ab9 | 6 | // stored in text file analog.txt in the MBED folder. The samples are |
YouTahDoug | 0:11245efb9ab9 | 7 | // also written out to stdout (TeraTerm). |
YouTahDoug | 0:11245efb9ab9 | 8 | // LED 1 turns ON when the sample goes above 0.6, and OFF when it |
YouTahDoug | 0:11245efb9ab9 | 9 | // falls below 0.6. LED2 toggles ON/OFF to show program activity. |
YouTahDoug | 0:11245efb9ab9 | 10 | // |
YouTahDoug | 0:11245efb9ab9 | 11 | // D. Wendelboe 14 July 2010 - Submitted "as is". No guarantees implied. |
YouTahDoug | 0:11245efb9ab9 | 12 | //----------------------------------------------------------------------------- |
YouTahDoug | 0:11245efb9ab9 | 13 | |
YouTahDoug | 0:11245efb9ab9 | 14 | #include "mbed.h" |
YouTahDoug | 0:11245efb9ab9 | 15 | |
YouTahDoug | 0:11245efb9ab9 | 16 | #define ON 1 |
YouTahDoug | 0:11245efb9ab9 | 17 | #define OFF 0 |
YouTahDoug | 0:11245efb9ab9 | 18 | |
YouTahDoug | 0:11245efb9ab9 | 19 | LocalFileSystem local("local"); |
YouTahDoug | 0:11245efb9ab9 | 20 | AnalogIn myinput(p20); |
YouTahDoug | 0:11245efb9ab9 | 21 | DigitalOut myled(p5); |
YouTahDoug | 0:11245efb9ab9 | 22 | DigitalOut led1(LED1); |
YouTahDoug | 0:11245efb9ab9 | 23 | DigitalOut led2(LED2); |
YouTahDoug | 0:11245efb9ab9 | 24 | |
YouTahDoug | 0:11245efb9ab9 | 25 | float analog_value; |
YouTahDoug | 0:11245efb9ab9 | 26 | int count = 0; |
YouTahDoug | 0:11245efb9ab9 | 27 | |
YouTahDoug | 0:11245efb9ab9 | 28 | int main() { |
YouTahDoug | 0:11245efb9ab9 | 29 | printf("Read and store 100 analog sample at 0.5 sec interval\r\n"); |
YouTahDoug | 0:11245efb9ab9 | 30 | |
YouTahDoug | 0:11245efb9ab9 | 31 | FILE *fp = fopen("/local/analog.txt","w"); // Open a file to save samples |
YouTahDoug | 0:11245efb9ab9 | 32 | printf("File analog.txt is open.\r\n"); |
YouTahDoug | 0:11245efb9ab9 | 33 | |
YouTahDoug | 0:11245efb9ab9 | 34 | while (count < 100) { |
YouTahDoug | 0:11245efb9ab9 | 35 | analog_value = myinput.read(); // Read analog (range 0.0 to 1.0) |
YouTahDoug | 0:11245efb9ab9 | 36 | if (analog_value > 0.6) // If value is above 0.6, then store |
YouTahDoug | 0:11245efb9ab9 | 37 | { // it as an "above" value. |
YouTahDoug | 0:11245efb9ab9 | 38 | fprintf (fp, "%3i: %f [above]\r\n", count+1, analog_value); |
YouTahDoug | 0:11245efb9ab9 | 39 | led1 = ON; // Turn LED ON if sample was stored. |
YouTahDoug | 0:11245efb9ab9 | 40 | |
YouTahDoug | 0:11245efb9ab9 | 41 | } else { // Below 0.6, store it as a "below" value. |
YouTahDoug | 0:11245efb9ab9 | 42 | fprintf (fp, "%3i: %f [below]\r\n", count+1, analog_value); |
YouTahDoug | 0:11245efb9ab9 | 43 | led1 = OFF; // Turn OFF if sample was not stored. |
YouTahDoug | 0:11245efb9ab9 | 44 | } |
YouTahDoug | 0:11245efb9ab9 | 45 | printf ("%3i: %f\r\n", count+1, analog_value); |
YouTahDoug | 0:11245efb9ab9 | 46 | count++; // Increment sample counter. |
YouTahDoug | 0:11245efb9ab9 | 47 | led2 = ON; // LED2 ON. |
YouTahDoug | 0:11245efb9ab9 | 48 | wait_ms(250); // Wait 0.25 second |
YouTahDoug | 0:11245efb9ab9 | 49 | led2 = OFF; // LED2 OFF. |
YouTahDoug | 0:11245efb9ab9 | 50 | wait_ms(250); // Wait 0.25 second |
YouTahDoug | 0:11245efb9ab9 | 51 | } |
YouTahDoug | 0:11245efb9ab9 | 52 | fclose(fp); // Close the sampe file after 100 samples read. |
YouTahDoug | 0:11245efb9ab9 | 53 | printf("File analog.txt closed.\r\n"); |
YouTahDoug | 0:11245efb9ab9 | 54 | printf("Finished. 100 samples taken. Bye!\r\n"); |
YouTahDoug | 0:11245efb9ab9 | 55 | } |