Lol smth

Dependencies:   LocalPositionSystem MMA8451Q Motor_Driver Sensors mbed

Fork of TDP_main_BartFork by Yelfie

Revision:
0:5ca0450111f3
Child:
1:eace997e9a93
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sensor_measure.h	Fri Feb 13 15:18:43 2015 +0000
@@ -0,0 +1,68 @@
+/*
+
+Sensor measurement header file. 
+Contains the pin declarations and variables for all sensors-related work
+Also contains the measurement function - should it???
+
+
+TODO 
+-decide whether pins should be Interrupts INs or is it going to be polling - polling atm
+- how to distingisuh between different sensor on/off frequency - maybe create a new class??
+- 
+LAST REVISED 13/02
+*/
+
+#ifndef _SENSOR_MEASURE_H
+#define _SENSOR_MEASURE_H
+
+#define NUMBER_SAMPLES 40 // NUMBER OF SAMPLES FOR SENSOR TESTING
+
+//define pinout for all the sensors
+InterruptIn pin_right_right(PTD0);
+InterruptIn pin_right_centre(PTD1);
+InterruptIn pin_right_left(PTD2);
+InterruptIn pin_left_right(PTD3);
+InterruptIn pin_left_centre(PTD4);
+InterruptIn pin_left_left(PTD5);
+//InterruptIn in(PTD0); maybe more~?
+
+//timer used by the sensor
+Timer sensorTimer;
+
+//structure for sensors
+typedef struct sensor_data {
+    InterruptIn pin;
+    int  black_value;
+    int  white_value;    
+}sensor_data;
+
+//Decalre all the sensors
+//sample rightright
+sensor_data right_right;
+right_right.pin = pin_right_right;
+right_right.black_value = 2013;
+right_right.white_value = 10000;
+
+// and continue with the others..
+
+//measuring function - returning whether it is black or white line 
+//"1" - black, "0" - white
+int measure (sensor_data sensor){
+    sensorTimer.reset();
+    int freq,period = 0;
+    int n =0; //number of samples
+    int sensor_old  = 0;//variable to remember old sensor state
+    
+    while (n < NUMBER_SAMPLES){
+        
+        if (sensor.pin == 1 && sensor_old == 0){ // detect on rising edge
+            n++;
+        }
+        sensor_old = sensor.pin;
+    }
+    
+    period = sensorTimer.read_us()/(float)n; // Get time
+    freq = (1/period)*1000000;   // Convert period (in us) to frequency (Hz). Works up to 100kHz. 
+    return freq;
+}
+#endif
\ No newline at end of file