02/07/15

Dependencies:   mbed

Dependents:   TabbedGUIMbed

Committer:
aidanPJG
Date:
Wed Jul 08 10:11:44 2015 +0000
Revision:
38:da262dc4f90a
Parent:
33:929f1755664b
Child:
39:3527578e78dd
module design - print array on module

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 33:929f1755664b 5 //#include "Distance.h"
aidanPJG 31:bea1117f14fb 6
aidanPJG 38:da262dc4f90a 7 void printArray(int array[6]);
aidanPJG 38:da262dc4f90a 8
aidanPJG 19:a3edf2c547e1 9 //mbed pins
aidanPJG 26:4289549b2d21 10 extern Serial pc; //defines the communication between MBed and pc
aidanPJG 26:4289549b2d21 11 int NoOfPins = 6; //for how many sensors there are
aidanPJG 31:bea1117f14fb 12 DigitalIn sensor[6] = {p5,p6,p7,p8,p9,p10} ; //array of sensors.
aidanPJG 31:bea1117f14fb 13
aidanPJG 31:bea1117f14fb 14
aidanPJG 19:a3edf2c547e1 15 //c++ variables
aidanPJG 26:4289549b2d21 16 time_t sensor_time ; //time at which sensor is broken
aidanPJG 32:792c4239a738 17 int timeDiff; //time between 2 sensors - not used right now
aidanPJG 31:bea1117f14fb 18 int times[6]; //array the size of #pins
aidanPJG 33:929f1755664b 19 float speed;
aidanPJG 26:4289549b2d21 20
aidanPJG 33:929f1755664b 21 int calculate(float distance)
aidanPJG 22:34bc2f2f5b09 22 {
aidanPJG 22:34bc2f2f5b09 23 pc.printf("new program \n"); //alert user of initialisation
aidanPJG 38:da262dc4f90a 24
aidanPJG 30:ab3a436e8968 25 int i = 0;
aidanPJG 30:ab3a436e8968 26 while( i < 6)
aidanPJG 25:bab86a12e9ad 27 {
aidanPJG 30:ab3a436e8968 28 while(!sensor[i])
aidanPJG 22:34bc2f2f5b09 29 {
aidanPJG 30:ab3a436e8968 30 if(sensor[i + 1]) {
aidanPJG 30:ab3a436e8968 31 sensor_time = time(NULL);
aidanPJG 30:ab3a436e8968 32 i++;
aidanPJG 30:ab3a436e8968 33 } //error checking incase next one is done
aidanPJG 22:34bc2f2f5b09 34 }
aidanPJG 33:929f1755664b 35 sensor_time = time(NULL); //gets current time
aidanPJG 32:792c4239a738 36 pc.printf(" %dth sensor: %d \t", i,sensor_time);
aidanPJG 33:929f1755664b 37 pc.printf(" distance is: %f \t", distance);
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 33:929f1755664b 41 pc.printf(" timediff: %d \t", timeDiff);
aidanPJG 33:929f1755664b 42 speed = distance / timeDiff;
aidanPJG 33:929f1755664b 43 pc.printf(" speed : %f \t", speed);
aidanPJG 32:792c4239a738 44 }
aidanPJG 30:ab3a436e8968 45 i++;
aidanPJG 30:ab3a436e8968 46 }
aidanPJG 32:792c4239a738 47 pc.printf(" \n Calculate completed \n"); //alert to let user know it completed
aidanPJG 38:da262dc4f90a 48 printArray(times);
aidanPJG 38:da262dc4f90a 49
aidanPJG 22:34bc2f2f5b09 50 }
aidanPJG 30:ab3a436e8968 51
aidanPJG 38:da262dc4f90a 52 void printArray(int array[6])
aidanPJG 38:da262dc4f90a 53 {
aidanPJG 38:da262dc4f90a 54 for (int i = 0; i < 5 ; i++) //printing module for array
aidanPJG 38:da262dc4f90a 55 {
aidanPJG 38:da262dc4f90a 56 pc.printf(" times: %d \t", times[i]);
aidanPJG 38:da262dc4f90a 57 }
aidanPJG 38:da262dc4f90a 58
aidanPJG 38:da262dc4f90a 59 }