Lol smth

Dependencies:   LocalPositionSystem MMA8451Q Motor_Driver Sensors mbed

Fork of TDP_main_BartFork by Yelfie

Committer:
Bartas
Date:
Thu Mar 19 21:49:25 2015 +0000
Revision:
18:d947ea4bab72
Parent:
17:de8b3111ddc5
Added all the cases which are relevant.

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
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 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 17:de8b3111ddc5 62 HC06.printf("LLU%i LRU%i rlu%i rru%i\n",sensorArray[7]->state,sensorArray[6]->state,sensorArray[1]->state,sensorArray[0]->state);
Reckstyle 17:de8b3111ddc5 63 HC06.printf("LLD%i LRD%i rld%i rrd%i\n\n",sensorArray[5]->state,sensorArray[4]->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 17:de8b3111ddc5 67 HC06.printf("sensorCheckSum%i\n\n",sensorsCheckSum);
Reckstyle 15:6453cd351452 68 }
Reckstyle 15:6453cd351452 69
Reckstyle 11:9e56d52485d1 70 int main() {
Reckstyle 11:9e56d52485d1 71
orsharp 12:bb21b76b6375 72
Reckstyle 11:9e56d52485d1 73
Reckstyle 17:de8b3111ddc5 74 Motor_Driver motors(PTA5, PTC9, PTC8,PTD4, PTA12, PTA4, PWM_PERIOD_US);
Reckstyle 11:9e56d52485d1 75
Reckstyle 17:de8b3111ddc5 76 // motors.setSpeed(0.1f);
Reckstyle 17:de8b3111ddc5 77 // motors.forward();
Reckstyle 17:de8b3111ddc5 78 // motors.start();
Reckstyle 17:de8b3111ddc5 79 // wait(2);
Reckstyle 17:de8b3111ddc5 80 // float x=0.1f;
Reckstyle 17:de8b3111ddc5 81 // while (1) {
Reckstyle 17:de8b3111ddc5 82 // motors.setLeftSpeed(x);
Reckstyle 17:de8b3111ddc5 83 // x = x+0.05;
Reckstyle 17:de8b3111ddc5 84 // wait(3);
Reckstyle 17:de8b3111ddc5 85 // }
Reckstyle 17:de8b3111ddc5 86 // motors.setLeftSpeed(0.1f);
Reckstyle 17:de8b3111ddc5 87 // wait(5);
Reckstyle 17:de8b3111ddc5 88 // motors.setLeftSpeed(0.2f);
Reckstyle 17:de8b3111ddc5 89 // motors.setRightSpeed (0.2f);
Reckstyle 17:de8b3111ddc5 90 // wait(3);
Reckstyle 17:de8b3111ddc5 91 // motors.setRightSpeed (0.1f);
Reckstyle 17:de8b3111ddc5 92 // wait(5);
Reckstyle 17:de8b3111ddc5 93 // motors.stop();
Reckstyle 11:9e56d52485d1 94
Reckstyle 17:de8b3111ddc5 95 //wait(1);
Reckstyle 17:de8b3111ddc5 96 // motors.reverse();
Reckstyle 17:de8b3111ddc5 97 // wait(5);
Reckstyle 17:de8b3111ddc5 98 // motors.stop();
Reckstyle 17:de8b3111ddc5 99 // motors.setSpeed(0.5f);
Reckstyle 17:de8b3111ddc5 100 // motors.start();
Reckstyle 17:de8b3111ddc5 101 // wait(5);
Reckstyle 17:de8b3111ddc5 102 // motors.stop();
Reckstyle 17:de8b3111ddc5 103 // wait(1);
Reckstyle 17:de8b3111ddc5 104 // motors.reverse();
Reckstyle 11:9e56d52485d1 105
Reckstyle 17:de8b3111ddc5 106
Reckstyle 17:de8b3111ddc5 107
Reckstyle 17:de8b3111ddc5 108 //motors.start();
Reckstyle 17:de8b3111ddc5 109
Reckstyle 11:9e56d52485d1 110 // setup_counter(1000, 0);
Reckstyle 11:9e56d52485d1 111 // float frequency = measure_frequency(CHANNEL_1);
Reckstyle 11:9e56d52485d1 112
Reckstyle 15:6453cd351452 113 driveMode = REGULAR; //initialise drivemoder
Reckstyle 11:9e56d52485d1 114 sensor_initialise(); // initialise sensor values
Reckstyle 11:9e56d52485d1 115 wait(1); //give time to set up the system
Reckstyle 11:9e56d52485d1 116
Reckstyle 11:9e56d52485d1 117 sensorTimer.start(); // start timer for sensors
Reckstyle 11:9e56d52485d1 118
Reckstyle 15:6453cd351452 119 HC06.baud(9600);
Reckstyle 16:3649eb1a056d 120 HC06.printf("working..");
Reckstyle 17:de8b3111ddc5 121 motors.setSpeed(0.1f);
Reckstyle 17:de8b3111ddc5 122 motors.forward();
Reckstyle 17:de8b3111ddc5 123 motors.start();
Reckstyle 16:3649eb1a056d 124 while(1){
Reckstyle 16:3649eb1a056d 125 measureSensors();
Reckstyle 16:3649eb1a056d 126 printBluetooth();
Reckstyle 17:de8b3111ddc5 127 if (sensorsCheckSum > 94){
Reckstyle 17:de8b3111ddc5 128 motors.setSpeed(0.1f);
Reckstyle 17:de8b3111ddc5 129 motors.setLeftSpeed(0.05f);
Reckstyle 16:3649eb1a056d 130 }
Reckstyle 17:de8b3111ddc5 131 else if (sensorsCheckSum < 94) {
Reckstyle 17:de8b3111ddc5 132 motors.setSpeed(0.1f);
Reckstyle 17:de8b3111ddc5 133 motors.setRightSpeed(0.05f);
Reckstyle 17:de8b3111ddc5 134 }
Reckstyle 17:de8b3111ddc5 135 else {
Reckstyle 17:de8b3111ddc5 136 motors.setSpeed(0.1f);
Reckstyle 17:de8b3111ddc5 137 }
Reckstyle 17:de8b3111ddc5 138 wait(0.1);
Reckstyle 17:de8b3111ddc5 139 }
Reckstyle 16:3649eb1a056d 140
Reckstyle 15:6453cd351452 141
Reckstyle 15:6453cd351452 142 //HC06.printf("AT");
Reckstyle 15:6453cd351452 143 //HC06.printf("AT+PIN5555");
Reckstyle 15:6453cd351452 144
Reckstyle 15:6453cd351452 145
Reckstyle 14:3844d1dacece 146 // pc.printf("Start...");
Reckstyle 17:de8b3111ddc5 147
Reckstyle 17:de8b3111ddc5 148
Reckstyle 14:3844d1dacece 149 // while (1) {
Reckstyle 14:3844d1dacece 150 //
Reckstyle 14:3844d1dacece 151 // if (driveMode == REGULAR) {
Reckstyle 14:3844d1dacece 152 // measureSensors();
Reckstyle 14:3844d1dacece 153 // switch (sensorsCheckSum) {
Bartas 18:d947ea4bab72 154 // case 0: // all black, turn around by 180 degrees
Bartas 18:d947ea4bab72 155 // break;
Bartas 18:d947ea4bab72 156 // case 30: //all right are white, left all black >> turn right(move left wheel)
Reckstyle 17:de8b3111ddc5 157 // break;
Bartas 18:d947ea4bab72 158 // case 46: //left 5 white, right only 3 black >> turn right
Bartas 18:d947ea4bab72 159 // break;
Bartas 18:d947ea4bab72 160 // case 94: //normal startting position, half of right and half of left are white, (move right wheel)
Reckstyle 17:de8b3111ddc5 161 // break;
Bartas 18:d947ea4bab72 162 // case 104: //right all white, left half white >> turn right 90 degrees
Bartas 18:d947ea4bab72 163 // break;
Bartas 18:d947ea4bab72 164 // case 154: //right 4 white, left only 6 black >> turn left
Bartas 18:d947ea4bab72 165 // break;
Bartas 18:d947ea4bab72 166 // case 174: //left all white, right all black >> turn left (move right wheel)
Reckstyle 14:3844d1dacece 167 // pc.printf ("only Right is white \n");
Reckstyle 14:3844d1dacece 168 // break;
Bartas 18:d947ea4bab72 169 // case 194 : //left all white, right half white >> go straight, turn right if 194 goes to 204
Reckstyle 14:3844d1dacece 170 // pc.printf ("only Left is white \n");
Reckstyle 14:3844d1dacece 171 // break;
Bartas 18:d947ea4bab72 172 // case 204 : //all sensors are white
Reckstyle 14:3844d1dacece 173 // pc.printf ("both are white \n");
Reckstyle 14:3844d1dacece 174 // break;
Reckstyle 17:de8b3111ddc5 175 //
Bartas 18:d947ea4bab72 176 //
Reckstyle 14:3844d1dacece 177 // default: //checksum is zero , all are black
Reckstyle 14:3844d1dacece 178 // pc.printf ("BLACK BLACK");
Reckstyle 11:9e56d52485d1 179 // break;
Reckstyle 14:3844d1dacece 180 // }
Reckstyle 14:3844d1dacece 181 //
Reckstyle 14:3844d1dacece 182 //
Reckstyle 14:3844d1dacece 183 //
Reckstyle 14:3844d1dacece 184 // }
Reckstyle 14:3844d1dacece 185 // else { //if (driveMode == SQUARE}
Reckstyle 14:3844d1dacece 186 // //implement the square searching thing..
Reckstyle 14:3844d1dacece 187 //
Reckstyle 14:3844d1dacece 188 // }
Reckstyle 14:3844d1dacece 189 //
Reckstyle 14:3844d1dacece 190 //
Reckstyle 14:3844d1dacece 191 // }
Reckstyle 14:3844d1dacece 192 //
Reckstyle 11:9e56d52485d1 193
Reckstyle 11:9e56d52485d1 194 }
Reckstyle 11:9e56d52485d1 195
Reckstyle 11:9e56d52485d1 196
Reckstyle 11:9e56d52485d1 197
Reckstyle 11:9e56d52485d1 198
Reckstyle 11:9e56d52485d1 199
Reckstyle 9:718987b106a8 200