Lol smth

Dependencies:   LocalPositionSystem MMA8451Q Motor_Driver Sensors mbed

Fork of TDP_main_BartFork by Yelfie

Committer:
Reckstyle
Date:
Thu Mar 19 16:57:30 2015 +0000
Revision:
19:d277614084bc
Parent:
17:de8b3111ddc5
Child:
20:198dc13777eb
iuui

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
Reckstyle 16:3649eb1a056d 32 Serial HC06(PTE0,PTE1); //TX,RX
Joseph_Penikis 10:c9212bbfeae6 33 //Serial pc(USBTX, USBRX);
Reckstyle 9:718987b106a8 34
Reckstyle 19:d277614084bc 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 19:d277614084bc 42 int passedTime1,passedTime2;
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 17:de8b3111ddc5 52 //pc.printf("%i iteration%i ",i,iterationNumber);
Reckstyle 16:3649eb1a056d 53 if (measure(sensorArray[i]) == 1) {//if sensor is white
Reckstyle 11:9e56d52485d1 54 sensorsCheckSum += (i+1)*(i+1);
Reckstyle 11:9e56d52485d1 55 }
Reckstyle 11:9e56d52485d1 56 }
Reckstyle 11:9e56d52485d1 57 //pc.printf("sensorsCheckSum is %i",sensorsCheckSum);
Reckstyle 11:9e56d52485d1 58 }
Reckstyle 11:9e56d52485d1 59
Reckstyle 15:6453cd351452 60 void printBluetooth() { //for debugging
Reckstyle 16:3649eb1a056d 61
Reckstyle 19:d277614084bc 62 pc.printf("LLU%i LRU%i rlu%i rru%i\n",sensorArray[1]->state,sensorArray[0]->state,sensorArray[1]->state,sensorArray[0]->state);
Reckstyle 19:d277614084bc 63 pc.printf("LLD%i LRD%i rld%i rrd%i\n\n",sensorArray[3]->state,sensorArray[2]->state,sensorArray[3]->state,sensorArray[2]->state);
Reckstyle 16:3649eb1a056d 64 //HC06.printf("%i %i %i %i",sensorArray[NUMBER_SENSORS_REGULAR-3]->state,sensorArray[NUMBER_SENSORS_REGULAR-4]->state,sensorArray[3]->state,sensorArray[2]->state);
Reckstyle 15:6453cd351452 65 //HC06.printf("%i %i/n%i %i,sensorArray[NUMBER_SENSORS_REGULAR]->state,sensorArray[NUMBER_SENSORS_REGULAR+1]->state,sensorArray[NUMBER_SENSORS_REGULAR+2]->state,sensorArray[NUMBER_SENSORS_REGULAR+3]->state);
Reckstyle 15:6453cd351452 66 //HC06.printf("%f %f",motor.getLeftSpeed(),motor.getRightSpeed());
Reckstyle 19:d277614084bc 67 pc.printf("sensorCheckSum%i\n\n",sensorsCheckSum);
Reckstyle 19:d277614084bc 68 //HC06.printf("passedTime1 %i passedTime2 \n\n",passedTime1,passedTime2);
Reckstyle 15:6453cd351452 69 }
Reckstyle 15:6453cd351452 70
Reckstyle 11:9e56d52485d1 71 int main() {
Reckstyle 11:9e56d52485d1 72
orsharp 12:bb21b76b6375 73
Reckstyle 11:9e56d52485d1 74
Reckstyle 19:d277614084bc 75 Motor_Driver motors(PTA5, PTC9, PTC8,PTD4, PTA12, PTA4, PWM_PERIOD_US);
Reckstyle 11:9e56d52485d1 76
Reckstyle 17:de8b3111ddc5 77 // motors.setSpeed(0.1f);
Reckstyle 17:de8b3111ddc5 78 // motors.forward();
Reckstyle 17:de8b3111ddc5 79 // motors.start();
Reckstyle 17:de8b3111ddc5 80 // wait(2);
Reckstyle 17:de8b3111ddc5 81 // float x=0.1f;
Reckstyle 17:de8b3111ddc5 82 // while (1) {
Reckstyle 17:de8b3111ddc5 83 // motors.setLeftSpeed(x);
Reckstyle 17:de8b3111ddc5 84 // x = x+0.05;
Reckstyle 17:de8b3111ddc5 85 // wait(3);
Reckstyle 17:de8b3111ddc5 86 // }
Reckstyle 17:de8b3111ddc5 87 // motors.setLeftSpeed(0.1f);
Reckstyle 17:de8b3111ddc5 88 // wait(5);
Reckstyle 17:de8b3111ddc5 89 // motors.setLeftSpeed(0.2f);
Reckstyle 17:de8b3111ddc5 90 // motors.setRightSpeed (0.2f);
Reckstyle 17:de8b3111ddc5 91 // wait(3);
Reckstyle 17:de8b3111ddc5 92 // motors.setRightSpeed (0.1f);
Reckstyle 17:de8b3111ddc5 93 // wait(5);
Reckstyle 17:de8b3111ddc5 94 // motors.stop();
Reckstyle 11:9e56d52485d1 95
Reckstyle 17:de8b3111ddc5 96 //wait(1);
Reckstyle 17:de8b3111ddc5 97 // motors.reverse();
Reckstyle 17:de8b3111ddc5 98 // wait(5);
Reckstyle 17:de8b3111ddc5 99 // motors.stop();
Reckstyle 17:de8b3111ddc5 100 // motors.setSpeed(0.5f);
Reckstyle 17:de8b3111ddc5 101 // motors.start();
Reckstyle 17:de8b3111ddc5 102 // wait(5);
Reckstyle 17:de8b3111ddc5 103 // motors.stop();
Reckstyle 17:de8b3111ddc5 104 // wait(1);
Reckstyle 17:de8b3111ddc5 105 // motors.reverse();
Reckstyle 11:9e56d52485d1 106
Reckstyle 17:de8b3111ddc5 107
Reckstyle 17:de8b3111ddc5 108
Reckstyle 17:de8b3111ddc5 109 //motors.start();
Reckstyle 17:de8b3111ddc5 110
Reckstyle 11:9e56d52485d1 111 // setup_counter(1000, 0);
Reckstyle 11:9e56d52485d1 112 // float frequency = measure_frequency(CHANNEL_1);
Reckstyle 19:d277614084bc 113 measureTimer.start();
Reckstyle 15:6453cd351452 114 driveMode = REGULAR; //initialise drivemoder
Reckstyle 11:9e56d52485d1 115 sensor_initialise(); // initialise sensor values
Reckstyle 11:9e56d52485d1 116 wait(1); //give time to set up the system
Reckstyle 11:9e56d52485d1 117
Reckstyle 11:9e56d52485d1 118 sensorTimer.start(); // start timer for sensors
Reckstyle 19:d277614084bc 119 float normalSpeed = 0.01f;
Reckstyle 15:6453cd351452 120 HC06.baud(9600);
Reckstyle 16:3649eb1a056d 121 HC06.printf("working..");
Reckstyle 19:d277614084bc 122 motors.setSpeed(normalSpeed);
Reckstyle 17:de8b3111ddc5 123 motors.forward();
Reckstyle 17:de8b3111ddc5 124 motors.start();
Reckstyle 19:d277614084bc 125
Reckstyle 19:d277614084bc 126
Reckstyle 19:d277614084bc 127
Reckstyle 19:d277614084bc 128 wait(3);
Reckstyle 16:3649eb1a056d 129 while(1){
Reckstyle 19:d277614084bc 130
Reckstyle 16:3649eb1a056d 131 measureSensors();
Reckstyle 19:d277614084bc 132 //measureTimer.reset();
Reckstyle 16:3649eb1a056d 133 printBluetooth();
Reckstyle 19:d277614084bc 134 //passedTime1 = measureTimer.read_ms();
Reckstyle 19:d277614084bc 135 if (sensorsCheckSum == 0) {
Reckstyle 19:d277614084bc 136 motors.setSpeed(normalSpeed);
Reckstyle 19:d277614084bc 137 }
Reckstyle 19:d277614084bc 138 else if (sensorsCheckSum == 1 || sensorsCheckSum == 9 || sensorsCheckSum == 10 || sensorsCheckSum == 14 || sensorsCheckSum==26){
Reckstyle 19:d277614084bc 139 motors.setLeftSpeed(normalSpeed/2);
Reckstyle 19:d277614084bc 140
Reckstyle 19:d277614084bc 141 motors.setRightSpeed(normalSpeed*6);
Reckstyle 16:3649eb1a056d 142 }
Reckstyle 19:d277614084bc 143 else if (sensorsCheckSum == 4 && sensorsCheckSum ==16 || sensorsCheckSum == 20 || sensorsCheckSum ==21 ||sensorsCheckSum== 29) {
Reckstyle 19:d277614084bc 144 motors.setRightSpeed(normalSpeed/2);
Reckstyle 19:d277614084bc 145 motors.setLeftSpeed(normalSpeed*9);
Reckstyle 17:de8b3111ddc5 146 }
Reckstyle 17:de8b3111ddc5 147 else {
Reckstyle 19:d277614084bc 148 motors.setSpeed(normalSpeed);
Reckstyle 17:de8b3111ddc5 149 }
Reckstyle 19:d277614084bc 150
Reckstyle 17:de8b3111ddc5 151 }
Reckstyle 16:3649eb1a056d 152
Reckstyle 15:6453cd351452 153
Reckstyle 15:6453cd351452 154 //HC06.printf("AT");
Reckstyle 15:6453cd351452 155 //HC06.printf("AT+PIN5555");
Reckstyle 15:6453cd351452 156
Reckstyle 15:6453cd351452 157
Reckstyle 14:3844d1dacece 158 // pc.printf("Start...");
Reckstyle 17:de8b3111ddc5 159
Reckstyle 17:de8b3111ddc5 160
Reckstyle 14:3844d1dacece 161 // while (1) {
Reckstyle 14:3844d1dacece 162 //
Reckstyle 14:3844d1dacece 163 // if (driveMode == REGULAR) {
Reckstyle 14:3844d1dacece 164 // measureSensors();
Reckstyle 14:3844d1dacece 165 // switch (sensorsCheckSum) {
Reckstyle 17:de8b3111ddc5 166 // case 74: //all right are white,else is good TURN RIGHT
Reckstyle 17:de8b3111ddc5 167 // break;
Reckstyle 17:de8b3111ddc5 168 // case 78: //RLD is black, all else good
Reckstyle 17:de8b3111ddc5 169 // break;
Reckstyle 17:de8b3111ddc5 170 // case 90: //RLU is black,all else good
Reckstyle 17:de8b3111ddc5 171 // break;
Reckstyle 17:de8b3111ddc5 172 //
Reckstyle 17:de8b3111ddc5 173 // case 94: //keep straight
Reckstyle 14:3844d1dacece 174 // pc.printf ("only Right is white \n");
Reckstyle 14:3844d1dacece 175 // break;
Reckstyle 17:de8b3111ddc5 176 // case 95 : //RRU is white
Reckstyle 14:3844d1dacece 177 // pc.printf ("only Left is white \n");
Reckstyle 14:3844d1dacece 178 // break;
Reckstyle 17:de8b3111ddc5 179 // case 103 : //RRD is white all else normal
Reckstyle 14:3844d1dacece 180 // pc.printf ("both are white \n");
Reckstyle 14:3844d1dacece 181 // break;
Reckstyle 17:de8b3111ddc5 182 //
Reckstyle 14:3844d1dacece 183 //// case 91:
Reckstyle 14:3844d1dacece 184 //// driveMode = SQUARE; //if all sensors are white you're in the square
Reckstyle 14:3844d1dacece 185 //// break;
Reckstyle 14:3844d1dacece 186 // default: //checksum is zero , all are black
Reckstyle 14:3844d1dacece 187 // pc.printf ("BLACK BLACK");
Reckstyle 11:9e56d52485d1 188 // break;
Reckstyle 14:3844d1dacece 189 // }
Reckstyle 14:3844d1dacece 190 //
Reckstyle 14:3844d1dacece 191 //
Reckstyle 14:3844d1dacece 192 //
Reckstyle 14:3844d1dacece 193 // }
Reckstyle 14:3844d1dacece 194 // else { //if (driveMode == SQUARE}
Reckstyle 14:3844d1dacece 195 // //implement the square searching thing..
Reckstyle 14:3844d1dacece 196 //
Reckstyle 14:3844d1dacece 197 // }
Reckstyle 14:3844d1dacece 198 //
Reckstyle 14:3844d1dacece 199 //
Reckstyle 14:3844d1dacece 200 // }
Reckstyle 14:3844d1dacece 201 //
Reckstyle 11:9e56d52485d1 202
Reckstyle 11:9e56d52485d1 203 }
Reckstyle 11:9e56d52485d1 204
Reckstyle 11:9e56d52485d1 205
Reckstyle 11:9e56d52485d1 206
Reckstyle 11:9e56d52485d1 207
Reckstyle 11:9e56d52485d1 208
Reckstyle 9:718987b106a8 209