Lol smth

Dependencies:   LocalPositionSystem MMA8451Q Motor_Driver Sensors mbed

Fork of TDP_main_BartFork by Yelfie

Committer:
Reckstyle
Date:
Wed Mar 18 16:55:14 2015 +0000
Revision:
17:de8b3111ddc5
Parent:
16:3649eb1a056d
Child:
18:d947ea4bab72
Child:
19:d277614084bc
xcdasd

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) {
Reckstyle 17:de8b3111ddc5 154 // case 74: //all right are white,else is good TURN RIGHT
Reckstyle 17:de8b3111ddc5 155 // break;
Reckstyle 17:de8b3111ddc5 156 // case 78: //RLD is black, all else good
Reckstyle 17:de8b3111ddc5 157 // break;
Reckstyle 17:de8b3111ddc5 158 // case 90: //RLU is black,all else good
Reckstyle 17:de8b3111ddc5 159 // break;
Reckstyle 17:de8b3111ddc5 160 //
Reckstyle 17:de8b3111ddc5 161 // case 94: //keep straight
Reckstyle 14:3844d1dacece 162 // pc.printf ("only Right is white \n");
Reckstyle 14:3844d1dacece 163 // break;
Reckstyle 17:de8b3111ddc5 164 // case 95 : //RRU is white
Reckstyle 14:3844d1dacece 165 // pc.printf ("only Left is white \n");
Reckstyle 14:3844d1dacece 166 // break;
Reckstyle 17:de8b3111ddc5 167 // case 103 : //RRD is white all else normal
Reckstyle 14:3844d1dacece 168 // pc.printf ("both are white \n");
Reckstyle 14:3844d1dacece 169 // break;
Reckstyle 17:de8b3111ddc5 170 //
Reckstyle 14:3844d1dacece 171 //// case 91:
Reckstyle 14:3844d1dacece 172 //// driveMode = SQUARE; //if all sensors are white you're in the square
Reckstyle 14:3844d1dacece 173 //// break;
Reckstyle 14:3844d1dacece 174 // default: //checksum is zero , all are black
Reckstyle 14:3844d1dacece 175 // pc.printf ("BLACK BLACK");
Reckstyle 11:9e56d52485d1 176 // break;
Reckstyle 14:3844d1dacece 177 // }
Reckstyle 14:3844d1dacece 178 //
Reckstyle 14:3844d1dacece 179 //
Reckstyle 14:3844d1dacece 180 //
Reckstyle 14:3844d1dacece 181 // }
Reckstyle 14:3844d1dacece 182 // else { //if (driveMode == SQUARE}
Reckstyle 14:3844d1dacece 183 // //implement the square searching thing..
Reckstyle 14:3844d1dacece 184 //
Reckstyle 14:3844d1dacece 185 // }
Reckstyle 14:3844d1dacece 186 //
Reckstyle 14:3844d1dacece 187 //
Reckstyle 14:3844d1dacece 188 // }
Reckstyle 14:3844d1dacece 189 //
Reckstyle 11:9e56d52485d1 190
Reckstyle 11:9e56d52485d1 191 }
Reckstyle 11:9e56d52485d1 192
Reckstyle 11:9e56d52485d1 193
Reckstyle 11:9e56d52485d1 194
Reckstyle 11:9e56d52485d1 195
Reckstyle 11:9e56d52485d1 196
Reckstyle 9:718987b106a8 197