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: MODSERIAL SDFileSystemSeth mbed
Fork of Opstellingbachelor_opdracht by
Diff: main.cpp
- Revision:
- 1:8b45b3ad350a
- Parent:
- 0:f7cd934498e4
- Child:
- 2:5c856ceaea2e
--- a/main.cpp Sun Sep 04 18:20:08 2016 +0000 +++ b/main.cpp Sun Sep 04 18:45:07 2016 +0000 @@ -7,17 +7,35 @@ //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// +// Thermocouple pin declarations +DigitalOut SCK_1(2); +DigitalOut CS_1(3); + +int pins[12] = {4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16}; + +for (int i = 0; i <= 11; i++) +{ + DigitalOut(pins[i], INPUT); +} + +double d; +int b[12] = { }; + +// Torque sensor AnalogIn fcs(PTB2); // force sensor output connected to analog 0 + +// LED DigitalOut r_led(LED_RED); DigitalOut g_led(LED_GREEN); DigitalOut b_led(LED_BLUE); - +// Serial connection and SD MODSERIAL pc(USBTX,USBRX, 1024, 512); SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd"); // MOSI, MISO, SCK, CS FILE *fp; +// Other declarations Ticker tick; const int baudrate = 115200; // baud rate @@ -31,11 +49,13 @@ float fcs_read; - int trial_numb = 0; int cal_numb = 1; -char filename[64]; +char filename_torque[64]; +char filename_temp[64]; +char filename_cal[64]; + @@ -56,6 +76,44 @@ fn1_go = 1; // go-flag active } +void readTC() +{ + CS_1 = 0; + wait_ms(70); + + for (int i = 15; i >= 0; i--) { + SCK_1 = 0; + SCK_1 = 1; + for (int j = 0; j <= 11; j++) { + if (digitalRead(pins[j])) { + b[j] |= (1 << i); + } + } + } + + CS_1 = 1; + + // capture torque sensor data + fcs_read = fcs.read(); + + // output data to file + fprintf(fp, "%.3f\t", fcs_read); + + + for (int j = 0; j <= 11; j++) { + if (b[j] & 0x1) { + b[j] = 20000; + } else { + b[j] &= 0xfffc; + d = b[j] / 16.0 * 100.0; + b[j] = d; + } + fprintf(fp, "%.3f\t", b[j]); + } + fprintf(fp, "\n\r"); + + +} ////////////////////Main//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// @@ -76,9 +134,9 @@ 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"); + led_control(led_on,led_on,led_off); //orange LED during calibration + sprintf(filename_cal, "/sd/cal_torque_%d.txt", cal_numb); //construct new textfile + fp = fopen(filename_cal, "w"); if(fp == NULL) { error("Could not open file for write\n"); } else { @@ -92,7 +150,7 @@ } 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("File saved as %s\n\r", filename_cal); //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': @@ -112,8 +170,7 @@ 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); + readTC(b); } break; } @@ -123,7 +180,7 @@ 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 + pc.printf("Press 'c' to perform new calibration or 't' to start new trial\n\r"); // print message to screen } break;