
Lol smth
Dependencies: LocalPositionSystem MMA8451Q Motor_Driver Sensors mbed
Fork of TDP_main_BartFork by
sensor_measure.h
- Committer:
- Reckstyle
- Date:
- 2015-02-13
- Revision:
- 1:eace997e9a93
- Parent:
- 0:5ca0450111f3
- Child:
- 9:718987b106a8
File content as of revision 1:eace997e9a93:
/* 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?? - NEED TESTING! 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 DigitalIn 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 { DigitalIn* pin; //TODO can;t seem to be able to declara this int black_value; int white_value; }sensor_data; /* All sensors should be declared in the MAIN PROGRAM???? sensor_data right_right; sensor_data.pin = &pin_right_right; right_right.black_value = 2013; sensor_data.white_value = 10000; */ sensor_data right_right; sensor_data right_centre; // and so on.... //Initialise values of all sensors void sensor_initialise () { //right_right right_right.pin = &pin_right_right; right_right.black_value = 2013; right_right.white_value = 10000; //and contiune so on.. } //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 < sensor.black_value*2)? 1 : 0; } #endif