Seth Ruiter / Mbed 2 deprecated bouke

Dependencies:   MODSERIAL SDFileSystemSeth mbed

Fork of Opstellingbachelor_opdracht by Claudia Haarman

Revision:
0:f7cd934498e4
Child:
1:8b45b3ad350a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Sun Sep 04 18:20:08 2016 +0000
@@ -0,0 +1,133 @@
+#include "mbed.h"
+#include "MODSERIAL.h"
+#include "SDFileSystem.h"
+
+
+////////////////////Declarations////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////
+
+AnalogIn fcs(PTB2);     // force sensor output connected to analog 0
+
+DigitalOut r_led(LED_RED);
+DigitalOut g_led(LED_GREEN);
+DigitalOut b_led(LED_BLUE);
+
+
+MODSERIAL pc(USBTX,USBRX, 1024, 512);
+SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd"); // MOSI, MISO, SCK, CS
+FILE *fp;
+
+Ticker tick;
+
+const int baudrate = 115200;      // baud rate
+const float Ts = 0.005;           // sample time (sec)
+
+const int led_on = 0;
+const int led_off = 1;
+
+volatile bool fn1_go = 0;                // go-flag starts in disabled state
+volatile bool start = 0;
+
+float fcs_read;
+
+
+int trial_numb = 0;
+int cal_numb = 1;
+
+char filename[64];
+
+
+
+////////////////////Functions///////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////
+
+void led_control(bool r, bool g, bool b)    // control rgb LEDs
+{
+    r_led.write(r);
+    g_led.write(g);
+    b_led.write(b);
+    return;
+}
+
+void fn1_activate()     // function called by ticker every Ts seconds
+{
+    fn1_go = 1;      // go-flag active
+}
+
+
+////////////////////Main////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////
+
+int main()
+{
+    pc.baud(baudrate);
+    tick.attach(&fn1_activate,Ts);
+    led_control(led_off,led_off,led_off);   // start with LEDs off
+
+    while (1) {
+        if(fn1_go) {                        // statements to execute when go-flag is active
+            fn1_go = 0;
+
+        }
+
+        if(pc.readable()) {                 // if character available
+            switch(pc.getc()) {             // read a character from keyboard
+                case 'c':
+                    led_control(led_on,led_on,led_off);                     //orange LED during calibration
+                    sprintf(filename, "/sd/cal_torque_%d.txt", cal_numb);   //construct new textfile
+                    fp = fopen(filename, "w");
+                    if(fp == NULL) {
+                        error("Could not open file for write\n");
+                    } else {
+                        while(1) {
+                            for (int i = 0; i<50; i++) {                    //get 50 samples from torque sensor
+                                fcs_read = fcs.read();
+                                fprintf(fp, "%.3f\t \n\r", fcs_read);       //output values to the screen
+                            }
+                            break;
+                        }
+                    }
+                    fclose(fp);                                             //close file
+                    cal_numb++;                                             //increment calibration number
+                    pc.printf("File saved as %s\n\r", filename);            //print name of calibration file to screen
+                    pc.printf("Press 'c' to record new calibration or 't' to start new trial\n\r");    // print message to screen
+                    break;
+                case 't':
+                    trial_numb++;
+                    pc.printf("Trial number: %d\n\r", trial_numb);
+                    pc.printf("Press 's' to start measurement\n\r");
+                    break;
+                case 's':
+                    start = !start;
+                    if (start) {
+                        led_control(led_off,led_on,led_off);                        //green LED during calibration
+                        sprintf(filename_torque, "/sd/trial%d.txt", trial_numb);    //construct new textfile to store data from torque sensor
+                        fp = fopen(filename_torque, "w");
+                        if(fp == NULL) {
+                            error("Could not open file for write\n\r");
+                        } else {
+                            pc.printf("Measurement started... \n\r");
+                            pc.printf("Press 's' to stop measurement\n\r");
+                            while(1) {
+                                fcs_read = fcs.read();
+                                fprintf(fp, "%.3f\t \n\r", fcs_read);
+                            }
+                            break;
+                        }
+
+                        break;
+                    } else {
+                        led_control(led_on,led_off,led_off);                                  // RED LED when ready to stopped measuring
+                        fclose(fp);
+                        pc.printf("File saved as %s\n\r", filename_torque);                                // print filename to screen
+                        pc.printf("Press 'c' to perform new calibration or 't' to start new trial\n\r");    // print message to screen                   
+
+                    }
+                    break;
+            }
+        }
+    }
+}