02/07/15

Dependencies:   mbed

Dependents:   TabbedGUIMbed

Committer:
aidanPJG
Date:
Wed Jul 15 15:16:03 2015 +0000
Revision:
50:d794595c6868
Parent:
47:1dc3b5f7bf4a
Child:
51:210353276e06
fiddling about with printArray. now prints a summary including speed. Going to add speed to xl now;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
aidanPJG 22:34bc2f2f5b09 1 #include "mbed.h"
aidanPJG 22:34bc2f2f5b09 2 #include <time.h>
aidanPJG 22:34bc2f2f5b09 3 #include <string>
aidanPJG 22:34bc2f2f5b09 4 #include <iostream>
aidanPJG 39:3527578e78dd 5 #include "Distance.h"
aidanPJG 31:bea1117f14fb 6
aidanPJG 50:d794595c6868 7 void printArray(double array[3], int timesArray[3]);
aidanPJG 44:3b45ec49bc44 8 void data(int sensor_number, int speed);
aidanPJG 38:da262dc4f90a 9
aidanPJG 19:a3edf2c547e1 10 //mbed pins
aidanPJG 26:4289549b2d21 11 extern Serial pc; //defines the communication between MBed and pc
aidanPJG 47:1dc3b5f7bf4a 12 int NoOfPins = 3; //for how many sensors there are
aidanPJG 47:1dc3b5f7bf4a 13 DigitalIn sensor[3] = {p5,p6,p7} ; //array of sensors.
aidanPJG 31:bea1117f14fb 14
aidanPJG 31:bea1117f14fb 15
aidanPJG 19:a3edf2c547e1 16 //c++ variables
aidanPJG 26:4289549b2d21 17 time_t sensor_time ; //time at which sensor is broken
aidanPJG 44:3b45ec49bc44 18 int timeDiff; //time between 2 sensors - not used right now
aidanPJG 44:3b45ec49bc44 19 float speed;
aidanPJG 47:1dc3b5f7bf4a 20 int times[3]; //array the size of #pins
aidanPJG 50:d794595c6868 21 double speeds[3]; //array of speeds
aidanPJG 50:d794595c6868 22 int calculate(double distance)
aidanPJG 22:34bc2f2f5b09 23 {
aidanPJG 22:34bc2f2f5b09 24 pc.printf("new program \n"); //alert user of initialisation
aidanPJG 38:da262dc4f90a 25
aidanPJG 30:ab3a436e8968 26 int i = 0;
aidanPJG 47:1dc3b5f7bf4a 27 while( i < 3)
aidanPJG 25:bab86a12e9ad 28 {
aidanPJG 30:ab3a436e8968 29 while(!sensor[i])
aidanPJG 22:34bc2f2f5b09 30 {
aidanPJG 30:ab3a436e8968 31 if(sensor[i + 1]) {
aidanPJG 30:ab3a436e8968 32 sensor_time = time(NULL);
aidanPJG 30:ab3a436e8968 33 i++;
aidanPJG 30:ab3a436e8968 34 } //error checking incase next one is done
aidanPJG 22:34bc2f2f5b09 35 }
aidanPJG 33:929f1755664b 36 sensor_time = time(NULL); //gets current time
aidanPJG 39:3527578e78dd 37 pc.printf("\n sensor %d : %d \t", i,sensor_time);
aidanPJG 31:bea1117f14fb 38 times[i] = sensor_time; //adds sensor times to array for logging.
aidanPJG 33:929f1755664b 39 if ( i > 0) { //to ensure it is not the first one
aidanPJG 33:929f1755664b 40 timeDiff = difftime(times[i], times[i-1]); //calculates the time difference
aidanPJG 39:3527578e78dd 41 pc.printf(" timediff: %d s \t", timeDiff);
aidanPJG 33:929f1755664b 42 speed = distance / timeDiff;
aidanPJG 39:3527578e78dd 43 pc.printf(" speed : %f m/s ", speed);
aidanPJG 44:3b45ec49bc44 44 speeds[i] = speed;
aidanPJG 32:792c4239a738 45 }
aidanPJG 30:ab3a436e8968 46 i++;
aidanPJG 30:ab3a436e8968 47 }
aidanPJG 32:792c4239a738 48 pc.printf(" \n Calculate completed \n"); //alert to let user know it completed
aidanPJG 50:d794595c6868 49 // printArray(times);
aidanPJG 50:d794595c6868 50 printArray(speeds, times);
aidanPJG 38:da262dc4f90a 51
aidanPJG 22:34bc2f2f5b09 52 }
aidanPJG 30:ab3a436e8968 53
aidanPJG 50:d794595c6868 54 void printArray(double array[3], int timesArray[3])
aidanPJG 38:da262dc4f90a 55 {
aidanPJG 47:1dc3b5f7bf4a 56 for (int i = 0; i < 3 ; i++) //printing module for array
aidanPJG 38:da262dc4f90a 57 {
aidanPJG 50:d794595c6868 58 pc.printf(" Sensor : %d Time %d Speed %f \n", i,times[i],speeds[i]);
aidanPJG 50:d794595c6868 59 // pc.printf(" %d : %d \t", i,times[i]);
aidanPJG 38:da262dc4f90a 60 }
aidanPJG 47:1dc3b5f7bf4a 61 for (int i = 0; i < 3 ; i++) //printing to Datalog
aidanPJG 44:3b45ec49bc44 62 {
aidanPJG 50:d794595c6868 63 data( i,speeds[i]);
aidanPJG 44:3b45ec49bc44 64 }
aidanPJG 38:da262dc4f90a 65
aidanPJG 38:da262dc4f90a 66 }