Seth Ruiter / Mbed 2 deprecated bouke

Dependencies:   MODSERIAL SDFileSystemSeth mbed

Fork of Opstellingbachelor_opdracht by Claudia Haarman

Committer:
c_haarm
Date:
Sun Sep 04 18:20:08 2016 +0000
Revision:
0:f7cd934498e4
Child:
1:8b45b3ad350a
first version with only torque sensor. c,t,s keys

Who changed what in which revision?

UserRevisionLine numberNew contents of line
c_haarm 0:f7cd934498e4 1 #include "mbed.h"
c_haarm 0:f7cd934498e4 2 #include "MODSERIAL.h"
c_haarm 0:f7cd934498e4 3 #include "SDFileSystem.h"
c_haarm 0:f7cd934498e4 4
c_haarm 0:f7cd934498e4 5
c_haarm 0:f7cd934498e4 6 ////////////////////Declarations////////////////////////////////////////////////
c_haarm 0:f7cd934498e4 7 ////////////////////////////////////////////////////////////////////////////////
c_haarm 0:f7cd934498e4 8 ////////////////////////////////////////////////////////////////////////////////
c_haarm 0:f7cd934498e4 9
c_haarm 0:f7cd934498e4 10 AnalogIn fcs(PTB2); // force sensor output connected to analog 0
c_haarm 0:f7cd934498e4 11
c_haarm 0:f7cd934498e4 12 DigitalOut r_led(LED_RED);
c_haarm 0:f7cd934498e4 13 DigitalOut g_led(LED_GREEN);
c_haarm 0:f7cd934498e4 14 DigitalOut b_led(LED_BLUE);
c_haarm 0:f7cd934498e4 15
c_haarm 0:f7cd934498e4 16
c_haarm 0:f7cd934498e4 17 MODSERIAL pc(USBTX,USBRX, 1024, 512);
c_haarm 0:f7cd934498e4 18 SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd"); // MOSI, MISO, SCK, CS
c_haarm 0:f7cd934498e4 19 FILE *fp;
c_haarm 0:f7cd934498e4 20
c_haarm 0:f7cd934498e4 21 Ticker tick;
c_haarm 0:f7cd934498e4 22
c_haarm 0:f7cd934498e4 23 const int baudrate = 115200; // baud rate
c_haarm 0:f7cd934498e4 24 const float Ts = 0.005; // sample time (sec)
c_haarm 0:f7cd934498e4 25
c_haarm 0:f7cd934498e4 26 const int led_on = 0;
c_haarm 0:f7cd934498e4 27 const int led_off = 1;
c_haarm 0:f7cd934498e4 28
c_haarm 0:f7cd934498e4 29 volatile bool fn1_go = 0; // go-flag starts in disabled state
c_haarm 0:f7cd934498e4 30 volatile bool start = 0;
c_haarm 0:f7cd934498e4 31
c_haarm 0:f7cd934498e4 32 float fcs_read;
c_haarm 0:f7cd934498e4 33
c_haarm 0:f7cd934498e4 34
c_haarm 0:f7cd934498e4 35 int trial_numb = 0;
c_haarm 0:f7cd934498e4 36 int cal_numb = 1;
c_haarm 0:f7cd934498e4 37
c_haarm 0:f7cd934498e4 38 char filename[64];
c_haarm 0:f7cd934498e4 39
c_haarm 0:f7cd934498e4 40
c_haarm 0:f7cd934498e4 41
c_haarm 0:f7cd934498e4 42 ////////////////////Functions///////////////////////////////////////////////////
c_haarm 0:f7cd934498e4 43 ////////////////////////////////////////////////////////////////////////////////
c_haarm 0:f7cd934498e4 44 ////////////////////////////////////////////////////////////////////////////////
c_haarm 0:f7cd934498e4 45
c_haarm 0:f7cd934498e4 46 void led_control(bool r, bool g, bool b) // control rgb LEDs
c_haarm 0:f7cd934498e4 47 {
c_haarm 0:f7cd934498e4 48 r_led.write(r);
c_haarm 0:f7cd934498e4 49 g_led.write(g);
c_haarm 0:f7cd934498e4 50 b_led.write(b);
c_haarm 0:f7cd934498e4 51 return;
c_haarm 0:f7cd934498e4 52 }
c_haarm 0:f7cd934498e4 53
c_haarm 0:f7cd934498e4 54 void fn1_activate() // function called by ticker every Ts seconds
c_haarm 0:f7cd934498e4 55 {
c_haarm 0:f7cd934498e4 56 fn1_go = 1; // go-flag active
c_haarm 0:f7cd934498e4 57 }
c_haarm 0:f7cd934498e4 58
c_haarm 0:f7cd934498e4 59
c_haarm 0:f7cd934498e4 60 ////////////////////Main////////////////////////////////////////////////////////
c_haarm 0:f7cd934498e4 61 ////////////////////////////////////////////////////////////////////////////////
c_haarm 0:f7cd934498e4 62 ////////////////////////////////////////////////////////////////////////////////
c_haarm 0:f7cd934498e4 63
c_haarm 0:f7cd934498e4 64 int main()
c_haarm 0:f7cd934498e4 65 {
c_haarm 0:f7cd934498e4 66 pc.baud(baudrate);
c_haarm 0:f7cd934498e4 67 tick.attach(&fn1_activate,Ts);
c_haarm 0:f7cd934498e4 68 led_control(led_off,led_off,led_off); // start with LEDs off
c_haarm 0:f7cd934498e4 69
c_haarm 0:f7cd934498e4 70 while (1) {
c_haarm 0:f7cd934498e4 71 if(fn1_go) { // statements to execute when go-flag is active
c_haarm 0:f7cd934498e4 72 fn1_go = 0;
c_haarm 0:f7cd934498e4 73
c_haarm 0:f7cd934498e4 74 }
c_haarm 0:f7cd934498e4 75
c_haarm 0:f7cd934498e4 76 if(pc.readable()) { // if character available
c_haarm 0:f7cd934498e4 77 switch(pc.getc()) { // read a character from keyboard
c_haarm 0:f7cd934498e4 78 case 'c':
c_haarm 0:f7cd934498e4 79 led_control(led_on,led_on,led_off); //orange LED during calibration
c_haarm 0:f7cd934498e4 80 sprintf(filename, "/sd/cal_torque_%d.txt", cal_numb); //construct new textfile
c_haarm 0:f7cd934498e4 81 fp = fopen(filename, "w");
c_haarm 0:f7cd934498e4 82 if(fp == NULL) {
c_haarm 0:f7cd934498e4 83 error("Could not open file for write\n");
c_haarm 0:f7cd934498e4 84 } else {
c_haarm 0:f7cd934498e4 85 while(1) {
c_haarm 0:f7cd934498e4 86 for (int i = 0; i<50; i++) { //get 50 samples from torque sensor
c_haarm 0:f7cd934498e4 87 fcs_read = fcs.read();
c_haarm 0:f7cd934498e4 88 fprintf(fp, "%.3f\t \n\r", fcs_read); //output values to the screen
c_haarm 0:f7cd934498e4 89 }
c_haarm 0:f7cd934498e4 90 break;
c_haarm 0:f7cd934498e4 91 }
c_haarm 0:f7cd934498e4 92 }
c_haarm 0:f7cd934498e4 93 fclose(fp); //close file
c_haarm 0:f7cd934498e4 94 cal_numb++; //increment calibration number
c_haarm 0:f7cd934498e4 95 pc.printf("File saved as %s\n\r", filename); //print name of calibration file to screen
c_haarm 0:f7cd934498e4 96 pc.printf("Press 'c' to record new calibration or 't' to start new trial\n\r"); // print message to screen
c_haarm 0:f7cd934498e4 97 break;
c_haarm 0:f7cd934498e4 98 case 't':
c_haarm 0:f7cd934498e4 99 trial_numb++;
c_haarm 0:f7cd934498e4 100 pc.printf("Trial number: %d\n\r", trial_numb);
c_haarm 0:f7cd934498e4 101 pc.printf("Press 's' to start measurement\n\r");
c_haarm 0:f7cd934498e4 102 break;
c_haarm 0:f7cd934498e4 103 case 's':
c_haarm 0:f7cd934498e4 104 start = !start;
c_haarm 0:f7cd934498e4 105 if (start) {
c_haarm 0:f7cd934498e4 106 led_control(led_off,led_on,led_off); //green LED during calibration
c_haarm 0:f7cd934498e4 107 sprintf(filename_torque, "/sd/trial%d.txt", trial_numb); //construct new textfile to store data from torque sensor
c_haarm 0:f7cd934498e4 108 fp = fopen(filename_torque, "w");
c_haarm 0:f7cd934498e4 109 if(fp == NULL) {
c_haarm 0:f7cd934498e4 110 error("Could not open file for write\n\r");
c_haarm 0:f7cd934498e4 111 } else {
c_haarm 0:f7cd934498e4 112 pc.printf("Measurement started... \n\r");
c_haarm 0:f7cd934498e4 113 pc.printf("Press 's' to stop measurement\n\r");
c_haarm 0:f7cd934498e4 114 while(1) {
c_haarm 0:f7cd934498e4 115 fcs_read = fcs.read();
c_haarm 0:f7cd934498e4 116 fprintf(fp, "%.3f\t \n\r", fcs_read);
c_haarm 0:f7cd934498e4 117 }
c_haarm 0:f7cd934498e4 118 break;
c_haarm 0:f7cd934498e4 119 }
c_haarm 0:f7cd934498e4 120
c_haarm 0:f7cd934498e4 121 break;
c_haarm 0:f7cd934498e4 122 } else {
c_haarm 0:f7cd934498e4 123 led_control(led_on,led_off,led_off); // RED LED when ready to stopped measuring
c_haarm 0:f7cd934498e4 124 fclose(fp);
c_haarm 0:f7cd934498e4 125 pc.printf("File saved as %s\n\r", filename_torque); // print filename to screen
c_haarm 0:f7cd934498e4 126 pc.printf("Press 'c' to perform new calibration or 't' to start new trial\n\r"); // print message to screen
c_haarm 0:f7cd934498e4 127
c_haarm 0:f7cd934498e4 128 }
c_haarm 0:f7cd934498e4 129 break;
c_haarm 0:f7cd934498e4 130 }
c_haarm 0:f7cd934498e4 131 }
c_haarm 0:f7cd934498e4 132 }
c_haarm 0:f7cd934498e4 133 }