Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: SDFileSystem mbed
Fork of FTF2014_lab4 by
Revision 3:b1f5d765d066, committed 2016-08-30
- Comitter:
- faithcerebral
- Date:
- Tue Aug 30 13:37:28 2016 +0000
- Parent:
- 2:41dd6f412728
- Commit message:
- to
Changed in this revision
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Mon Apr 07 19:36:26 2014 +0000
+++ b/main.cpp Tue Aug 30 13:37:28 2016 +0000
@@ -4,35 +4,144 @@
SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd"); // MOSI, MISO, SCK, CS
Serial pc(USBTX, USBRX);
FILE *fp;
+FILE *dp;
+
char buffer[1024];
-int main() {
+AnalogIn sensor(PTB2);
+
+InterruptIn event(PTB3);
+AnalogOut led(PTC10);
+
+int interrupt = 0;
+Timer clk;
+Timer clkb;
+
+/*Configuration_settings*/
+typedef struct {
+ float min_angle;
+ float max_angle;
+ float step_size;
+ } data;
+ data config;
+
+void ReadConfigurationSettings()
+{
+ //http://www.inmoov.fr/wp-content/uploads/2015/02/Introduction-to-Servo-Motors-Arduino.pdf
+ //length of pulse corresponds to angle the servo must turn to
+ //1 ms = 0deg, 1.5ms = 90
+ //2 ms = 180deg
+
+
pc.printf("Initializing \n");
- wait(2);
+ dp = fopen("/sd/config.txt", "r");
+ if(dp == NULL) {
+ pc.printf("Could not open file for write\r\n");
+ }
+
+ pc.printf("Found the file!");
+ while(!feof (dp)){
+ fscanf(dp, "%f ", &config.min_angle);// in degrees
+ fscanf(dp, "%f ", &config.max_angle);// in degrees
+ fscanf(dp, "%f ", &config.step_size);//in degrees
+
+ }
+ pc.printf("%f, %f, %f", config.min_angle, config.max_angle, config.step_size);
+ fclose(dp);
+
+
+
+}
+
- fp = fopen("/sd/hello.txt", "r");
- if (fp != NULL) {
- fclose(fp);
- remove("/sd/hello.txt");
- pc.printf("Remove an existing file with the same name \n");
+void trigger(){
+ interrupt = abs((interrupt - 1) );
+ led = !led;
+ //angle = angle+step_size;
+ // return angle;
+ }
+
+void BackgroundReading()
+//this function opens the sd folder and saves the background reading for 10seconds
+{
+ float time;
+ float reading;
+ FILE *fp = fopen("/sd/mydir/data.csv", "a");
+ if (fp == NULL){
+ pc.printf("Could not opne file for write \r \n");
+ }
+ //start the time and record background for 10seconds
+ clkb.start();
+ time = clkb.read();
+ fprintf(fp, "Background reading\n");
+
+ while(time < 10)
+ {
+ reading = sensor.read();
+ //save in buffer
+ }
+ //at the end of the 10 seconds write in file
+
+
+}
+
+void OpenCsv()
+{
+ mkdir("/sd/mydir", 0777); //make directrory
+ wait(0.2);
+
+ FILE *fp = fopen("/sd/mydir/data.csv", "w");
+ if(fp == NULL) {
+ pc.printf("Could not open file for write\r\n");
+ }
+ fprintf(fp, "value, time, angle \n");
+ fclose(fp);
+}
+void SaveCsv(FILE *fp, float value, float time, float angle)
+{
+ fp = fopen("/sd/mydir/data.csv", "a");
+ fprintf(fp, "%d, %3f ,%f \n", angle, time, value);
+ fclose(fp);
}
- printf("\nWriting data to the sd card \n");
- fp = fopen("/sd/hello.txt", "w");
- if (fp == NULL) {
- pc.printf("Unable to write the file \n");
- } else {
- fprintf(fp, "mbed SDCard application!");
+int main() {
+
+ event.rise(&trigger);
+ float value = 0.0;
+ float time_ms = 0.0, time_s =0.0, step_time = 0.0;
+ int angle =0 ;
+
+
+
+ ReadConfigurationSettings();
+ wait(2);
+ OpenCsv();
+
+ clk.start();
+ time_s = (clk.read_ms())/1000;
+
+ while (1){ //run for specific time.
+ value = sensor.read();
+ time_ms = clk.read_ms();
+ if (time_ms < 500)
+ {
+ time_s = time_ms/1000;
+ }
+ else {
+ time_s = ((time_ms + 500)/1000 ); //convert milliseconds to seconds
+ }
+ __disable_irq();
+ if(interrupt == 0){
+ SaveCsv(fp, angle, time_s, value);
+ pc.printf("%f, %3f\n", value, time_s);
+ }
+
+ __enable_irq();
+ }
+
fclose(fp);
- pc.printf("File successfully written! \n");
- }
+
+
+}
- printf("\nReading data from the SD card. \n");
- fp = fopen("/sd/hello.txt", "r");
- if (fp != NULL) {
- int size = fread(buffer, sizeof(char), 1024, fp);
- printf("Number of data read: %d, text from hello.txt file: %s \n", size, buffer);
- fclose(fp);
- }
- printf("End of Lab 4. \n");
-}
+
