Don't want to screw something by updating the code as Ivelin updated himself while I was writing so I am forking it.

Dependencies:   LocalPositionSystem MMA8451Q Motor_Driver Sensors mbed

Fork of TDP_main by Yelfie

Committer:
Reckstyle
Date:
Wed Mar 11 14:00:37 2015 +0000
Revision:
14:3844d1dacece
Parent:
12:bb21b76b6375
Child:
15:6453cd351452
11/03

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Joseph_Penikis 3:0274e082582e 1 // TESTING REPO COMMIT
Joseph_Penikis 3:0274e082582e 2
Reckstyle 2:e2adb7ab2947 3 /*
Reckstyle 2:e2adb7ab2947 4 ****** MAIN PROGRAM ******
Reckstyle 2:e2adb7ab2947 5
Reckstyle 11:9e56d52485d1 6
Reckstyle 2:e2adb7ab2947 7
Reckstyle 2:e2adb7ab2947 8 Please consider that although it is an embedded envrionment we are NOT creating a HARD-TIME real time system - delays can be dealt with
Reckstyle 11:9e56d52485d1 9
Reckstyle 11:9e56d52485d1 10
Reckstyle 11:9e56d52485d1 11 Sensors are mapped on the global variable sensorsCheckSum,
Reckstyle 11:9e56d52485d1 12 which multiplies the sensor number by itself to then decode,
Reckstyle 11:9e56d52485d1 13 which sensors are off and which are on
Reckstyle 11:9e56d52485d1 14 ie. if sensor rightright - sensorChecksum = 1*1 = 1
Reckstyle 11:9e56d52485d1 15 if rightright and rightcentre - sensorChecksum = 1*1 + 2*2 = 5
Reckstyle 11:9e56d52485d1 16 ...
Reckstyle 2:e2adb7ab2947 17 */
Reckstyle 2:e2adb7ab2947 18
Reckstyle 2:e2adb7ab2947 19
Reckstyle 2:e2adb7ab2947 20
Reckstyle 0:5ca0450111f3 21 #include "mbed.h"
Reckstyle 11:9e56d52485d1 22 #include "sensor_measure.h"
Joseph_Penikis 5:2fc7bf0135d4 23 #include "Motor_Driver.h"
orsharp 12:bb21b76b6375 24 #include "shooter.h"
Reckstyle 9:718987b106a8 25 //#include "Sensors.h"
Reckstyle 0:5ca0450111f3 26
Joseph_Penikis 5:2fc7bf0135d4 27 #define PWM_PERIOD_US 10000
Reckstyle 0:5ca0450111f3 28
Joseph_Penikis 7:14af656b721f 29
orsharp 12:bb21b76b6375 30 //DigitalOut led(LED1);
orsharp 12:bb21b76b6375 31
Joseph_Penikis 6:bea13722aae7 32
Joseph_Penikis 10:c9212bbfeae6 33 //Serial pc(USBTX, USBRX);
Reckstyle 9:718987b106a8 34
Joseph_Penikis 10:c9212bbfeae6 35 //Timer MeasureTimer; //Timer used for measurement
Joseph_Penikis 10:c9212bbfeae6 36
orsharp 12:bb21b76b6375 37 //Motor_Driver motors(PTD4, PTA12, PTA4, PTA5, PTC9, PTC8, PWM_PERIOD_US);
Reckstyle 9:718987b106a8 38
Reckstyle 11:9e56d52485d1 39 typedef enum mode {REGULAR,SQUARE} mode; //enumeration for different states
Reckstyle 11:9e56d52485d1 40 mode driveMode; //declaring the variable for the states
Reckstyle 11:9e56d52485d1 41 int sensorsCheckSum; //varibale used for sensors mapping access
Reckstyle 11:9e56d52485d1 42
Reckstyle 11:9e56d52485d1 43
Reckstyle 11:9e56d52485d1 44
Reckstyle 11:9e56d52485d1 45 void measureSensors () {
Reckstyle 11:9e56d52485d1 46 sensorsCheckSum = 0; //zero it when first going into the routine
Reckstyle 11:9e56d52485d1 47 int iterationNumber = NUMBER_SENSORS_REGULAR;
Reckstyle 11:9e56d52485d1 48 if (driveMode == SQUARE) {
orsharp 12:bb21b76b6375 49 iterationNumber += NUMBER_SENSORS_SQUARE;
Reckstyle 11:9e56d52485d1 50 }
Reckstyle 11:9e56d52485d1 51 for (int i = 0; i < iterationNumber;i++){
Reckstyle 11:9e56d52485d1 52 if (measure(*sensorArray[i]) == 1) {//if sensor is white
Reckstyle 11:9e56d52485d1 53 sensorsCheckSum += (i+1)*(i+1);
Reckstyle 11:9e56d52485d1 54 }
Reckstyle 11:9e56d52485d1 55 }
Reckstyle 11:9e56d52485d1 56 //pc.printf("sensorsCheckSum is %i",sensorsCheckSum);
Reckstyle 11:9e56d52485d1 57 }
Reckstyle 11:9e56d52485d1 58
Reckstyle 11:9e56d52485d1 59 int main() {
Reckstyle 11:9e56d52485d1 60
orsharp 12:bb21b76b6375 61
Reckstyle 11:9e56d52485d1 62 /*
Reckstyle 11:9e56d52485d1 63 Motor_Driver motors(PTD4, PTA12, PTA4, PTA5, PTC9, PTC8, PWM_PERIOD_US);
Reckstyle 11:9e56d52485d1 64
Reckstyle 11:9e56d52485d1 65 motors.setSpeed(1.0f);
Reckstyle 11:9e56d52485d1 66 motors.forward();
Reckstyle 11:9e56d52485d1 67 motors.start();
Reckstyle 11:9e56d52485d1 68
Reckstyle 11:9e56d52485d1 69 wait(3);
Reckstyle 11:9e56d52485d1 70
Reckstyle 11:9e56d52485d1 71 motors.stop()
Reckstyle 11:9e56d52485d1 72 motors.reverse();
Reckstyle 11:9e56d52485d1 73 wait(200ms);
Reckstyle 11:9e56d52485d1 74
Reckstyle 11:9e56d52485d1 75 motors.start();
Reckstyle 11:9e56d52485d1 76 */
Reckstyle 11:9e56d52485d1 77 // setup_counter(1000, 0);
Reckstyle 11:9e56d52485d1 78 // float frequency = measure_frequency(CHANNEL_1);
Reckstyle 11:9e56d52485d1 79
orsharp 12:bb21b76b6375 80 driveMode = REGULAR; //initialise drivemode
Reckstyle 11:9e56d52485d1 81 sensor_initialise(); // initialise sensor values
Reckstyle 11:9e56d52485d1 82 wait(1); //give time to set up the system
Reckstyle 11:9e56d52485d1 83
Reckstyle 11:9e56d52485d1 84 sensorTimer.start(); // start timer for sensors
Reckstyle 14:3844d1dacece 85 shoot (0.3);
Reckstyle 11:9e56d52485d1 86
Reckstyle 14:3844d1dacece 87 // pc.printf("Start...");
Reckstyle 14:3844d1dacece 88 //
Reckstyle 14:3844d1dacece 89 //
Reckstyle 14:3844d1dacece 90 // while (1) {
Reckstyle 14:3844d1dacece 91 //
Reckstyle 14:3844d1dacece 92 // if (driveMode == REGULAR) {
Reckstyle 14:3844d1dacece 93 // measureSensors();
Reckstyle 14:3844d1dacece 94 // switch (sensorsCheckSum) {
Reckstyle 14:3844d1dacece 95 // case 1: //right right is 1*1 + 0 + 0+ 0+0 +0
Reckstyle 14:3844d1dacece 96 // pc.printf ("only Right is white \n");
Reckstyle 14:3844d1dacece 97 // break;
Reckstyle 14:3844d1dacece 98 // case 4 : //0*0 + 2*2 + 0 + 0 + 0
Reckstyle 14:3844d1dacece 99 // pc.printf ("only Left is white \n");
Reckstyle 14:3844d1dacece 100 // break;
Reckstyle 14:3844d1dacece 101 // case 5 : //1*1 + 2*2 + 0 + 0
Reckstyle 14:3844d1dacece 102 // pc.printf ("both are white \n");
Reckstyle 14:3844d1dacece 103 // break;
Reckstyle 14:3844d1dacece 104 //// case 91:
Reckstyle 14:3844d1dacece 105 //// driveMode = SQUARE; //if all sensors are white you're in the square
Reckstyle 14:3844d1dacece 106 //// break;
Reckstyle 14:3844d1dacece 107 // default: //checksum is zero , all are black
Reckstyle 14:3844d1dacece 108 // pc.printf ("BLACK BLACK");
Reckstyle 11:9e56d52485d1 109 // break;
Reckstyle 14:3844d1dacece 110 // }
Reckstyle 14:3844d1dacece 111 //
Reckstyle 14:3844d1dacece 112 //
Reckstyle 14:3844d1dacece 113 //
Reckstyle 14:3844d1dacece 114 // }
Reckstyle 14:3844d1dacece 115 // else { //if (driveMode == SQUARE}
Reckstyle 14:3844d1dacece 116 // //implement the square searching thing..
Reckstyle 14:3844d1dacece 117 //
Reckstyle 14:3844d1dacece 118 // }
Reckstyle 14:3844d1dacece 119 //
Reckstyle 14:3844d1dacece 120 //
Reckstyle 14:3844d1dacece 121 // }
Reckstyle 14:3844d1dacece 122 //
Reckstyle 11:9e56d52485d1 123
Reckstyle 11:9e56d52485d1 124 }
Reckstyle 11:9e56d52485d1 125
Reckstyle 11:9e56d52485d1 126
Reckstyle 11:9e56d52485d1 127
Reckstyle 11:9e56d52485d1 128
Reckstyle 11:9e56d52485d1 129
Reckstyle 11:9e56d52485d1 130 /* TOBE deleted
Reckstyle 9:718987b106a8 131 double measure1 (){
Reckstyle 9:718987b106a8 132
Reckstyle 9:718987b106a8 133
Reckstyle 9:718987b106a8 134
Reckstyle 9:718987b106a8 135 sensorTimer.reset();
Reckstyle 9:718987b106a8 136 double freq,period = 0.0;
Reckstyle 9:718987b106a8 137 int n =0; //number of samples
Reckstyle 9:718987b106a8 138 int sensor_old = 0;
Reckstyle 9:718987b106a8 139 int sensor_new = 0;//variable to remember old sensor state
Reckstyle 9:718987b106a8 140 double time_us = sensorTimer.read();
Reckstyle 9:718987b106a8 141 while (n < NUMBER_SAMPLES){
Reckstyle 9:718987b106a8 142 sensor_new = pin_right_right.read();
Reckstyle 9:718987b106a8 143 if ( sensor_new== 1 && sensor_old == 0){ // detect on rising edge ,sensor_old
Reckstyle 9:718987b106a8 144 n++;
Reckstyle 9:718987b106a8 145 }
Reckstyle 9:718987b106a8 146 sensor_old = sensor_new;
Reckstyle 9:718987b106a8 147
Reckstyle 9:718987b106a8 148 }
Reckstyle 9:718987b106a8 149 double time_us2 = sensorTimer.read();
Reckstyle 9:718987b106a8 150 // pc.printf(" delta time is %f , time 2 is %f " , (time_us2 - time_us), time_us2);
Reckstyle 9:718987b106a8 151 period = time_us2/((double)NUMBER_SAMPLES); // Get time
Reckstyle 9:718987b106a8 152 freq = (1/period); // Convert period (in us) to frequency (Hz). Works up to 100kHz.
Reckstyle 9:718987b106a8 153 // pc.printf(" period is %f ", period);
Reckstyle 9:718987b106a8 154
Reckstyle 9:718987b106a8 155 return freq;//(freq < sensor.black_value*2)? 1 : 0;
Reckstyle 9:718987b106a8 156 }
Reckstyle 9:718987b106a8 157 */