Team Ascent / Mbed 2 deprecated FinalBluetoothFunction

Dependencies:   mbed

Committer:
Dbee16
Date:
Wed Mar 11 22:41:53 2015 +0000
Revision:
1:c4af0bbe20b9
Parent:
0:f54028dab58f
Child:
2:054c41590f3f
I think i fixed an error or two in remoteControl(); done nothing else to it

Who changed what in which revision?

UserRevisionLine numberNew contents of line
fraserhmbed 0:f54028dab58f 1
fraserhmbed 0:f54028dab58f 2 /* what target am i at?
fraserhmbed 0:f54028dab58f 3 wait for input from phone
fraserhmbed 0:f54028dab58f 4 if input is 1 or 2 then return number to choose target choice function which then fires at target
fraserhmbed 0:f54028dab58f 5 did i hit the target?
fraserhmbed 0:f54028dab58f 6 wait for input from phone
fraserhmbed 0:f54028dab58f 7 if input is yes then go back to maze navigation function
fraserhmbed 0:f54028dab58f 8 if input is no then try again
fraserhmbed 0:f54028dab58f 9 ********************************************************** */
fraserhmbed 0:f54028dab58f 10
Dbee16 1:c4af0bbe20b9 11 #include "mbed.h"
Dbee16 1:c4af0bbe20b9 12
fraserhmbed 0:f54028dab58f 13 Serial blue(PTC4,PTC3);
fraserhmbed 0:f54028dab58f 14 DigitalOut led(LED1);
fraserhmbed 0:f54028dab58f 15
Dbee16 1:c4af0bbe20b9 16 // which target are we at?
Dbee16 1:c4af0bbe20b9 17 int TargetChoice()
Dbee16 1:c4af0bbe20b9 18 {
Dbee16 1:c4af0bbe20b9 19
fraserhmbed 0:f54028dab58f 20 blue.printf("Which target am I at?"); // ask user question
fraserhmbed 0:f54028dab58f 21 char TargetIn = blue.getc(); // assign user input to TargetIn
fraserhmbed 0:f54028dab58f 22 int command=0, choice = 0;
Dbee16 1:c4af0bbe20b9 23
Dbee16 1:c4af0bbe20b9 24 while(command==0) { // loop until a command has been given
Dbee16 1:c4af0bbe20b9 25 switch (TargetIn) { // input is either 1 or 2 in DECIMAL
fraserhmbed 0:f54028dab58f 26 case 0x31: // if target 1
Dbee16 1:c4af0bbe20b9 27 choice=1; //
fraserhmbed 0:f54028dab58f 28 command = 1; // exit while
Dbee16 1:c4af0bbe20b9 29 break;
fraserhmbed 0:f54028dab58f 30 case 0x32: // if target 2
Dbee16 1:c4af0bbe20b9 31 choice=2; // return 2 to ball firing or call ball fire 2
fraserhmbed 0:f54028dab58f 32 command = 1; // exit while
Dbee16 1:c4af0bbe20b9 33 break;
Dbee16 1:c4af0bbe20b9 34 }
Dbee16 1:c4af0bbe20b9 35
fraserhmbed 0:f54028dab58f 36 }
fraserhmbed 0:f54028dab58f 37 return choice; // return which target to fire at
fraserhmbed 0:f54028dab58f 38 }
fraserhmbed 0:f54028dab58f 39
fraserhmbed 0:f54028dab58f 40 // did we hit the target
Dbee16 1:c4af0bbe20b9 41 int SuccessCheck()
Dbee16 1:c4af0bbe20b9 42 {
Dbee16 1:c4af0bbe20b9 43
fraserhmbed 0:f54028dab58f 44 blue.printf("Did I hit the target?"); // ask user question
fraserhmbed 0:f54028dab58f 45 char SuccessIn = blue.getc(); // assign user input to SuccessIn
fraserhmbed 0:f54028dab58f 46 int command=0, success=0;
Dbee16 1:c4af0bbe20b9 47
fraserhmbed 0:f54028dab58f 48 while(command==0) { // loop until a command has been given
fraserhmbed 0:f54028dab58f 49 switch (SuccessIn) { // input either y (0x79) or n (0x6E)
Dbee16 1:c4af0bbe20b9 50 case 0x79: // if input is y
Dbee16 1:c4af0bbe20b9 51 success=1; // return 1 directs to go back to the maze and locate next target
fraserhmbed 0:f54028dab58f 52 command = 1;
Dbee16 1:c4af0bbe20b9 53 break;
Dbee16 1:c4af0bbe20b9 54
fraserhmbed 0:f54028dab58f 55 case 0x6E: // if input is n
Dbee16 1:c4af0bbe20b9 56 success=0; // return 0 to go back to trying to hit the target
fraserhmbed 0:f54028dab58f 57 command = 1;
Dbee16 1:c4af0bbe20b9 58 break;
Dbee16 1:c4af0bbe20b9 59 }
Dbee16 1:c4af0bbe20b9 60
fraserhmbed 0:f54028dab58f 61 }
Dbee16 1:c4af0bbe20b9 62 return success;
Dbee16 1:c4af0bbe20b9 63 }
Dbee16 1:c4af0bbe20b9 64
fraserhmbed 0:f54028dab58f 65 //main bluetooth operation function
Dbee16 1:c4af0bbe20b9 66 void MazeBluetoothing()
Dbee16 1:c4af0bbe20b9 67 {
Dbee16 1:c4af0bbe20b9 68
Dbee16 1:c4af0bbe20b9 69 // int bluetooth=0; does this still initialise int bluetooth to 0? for the while loop?
Dbee16 1:c4af0bbe20b9 70 while(int bluetooth=0) {
Dbee16 1:c4af0bbe20b9 71
Dbee16 1:c4af0bbe20b9 72 int target = TargetChoice(); // call target choosing function
Dbee16 1:c4af0bbe20b9 73
Dbee16 1:c4af0bbe20b9 74 // if target = 1 then call function to fire at target 1, if target = 2 then call fire function 2
Dbee16 1:c4af0bbe20b9 75 switch (target) {
Dbee16 1:c4af0bbe20b9 76 case 1:
Dbee16 1:c4af0bbe20b9 77 //call target 1 function
Dbee16 1:c4af0bbe20b9 78 break;
fraserhmbed 0:f54028dab58f 79
Dbee16 1:c4af0bbe20b9 80 case 2:
Dbee16 1:c4af0bbe20b9 81 //call target 2 function
Dbee16 1:c4af0bbe20b9 82 break;
Dbee16 1:c4af0bbe20b9 83 }
Dbee16 1:c4af0bbe20b9 84 int success = SuccessCheck();
Dbee16 1:c4af0bbe20b9 85
Dbee16 1:c4af0bbe20b9 86 // if success is 0, then reposition & go back to start of bluetoothing()
Dbee16 1:c4af0bbe20b9 87 switch (success) {
Dbee16 1:c4af0bbe20b9 88 case 0:
Dbee16 1:c4af0bbe20b9 89 // call repositioning functionthen break to go back to loop of bluetoothing
Dbee16 1:c4af0bbe20b9 90 break;
Dbee16 1:c4af0bbe20b9 91
Dbee16 1:c4af0bbe20b9 92 case 1:
Dbee16 1:c4af0bbe20b9 93 bluetooth=1;
Dbee16 1:c4af0bbe20b9 94 break;
Dbee16 1:c4af0bbe20b9 95
Dbee16 1:c4af0bbe20b9 96 }
Dbee16 1:c4af0bbe20b9 97 }
fraserhmbed 0:f54028dab58f 98 }
fraserhmbed 0:f54028dab58f 99
fraserhmbed 0:f54028dab58f 100
fraserhmbed 0:f54028dab58f 101 //motor select pins
fraserhmbed 0:f54028dab58f 102 DigitalOut motor_lf(PTE2);
fraserhmbed 0:f54028dab58f 103 DigitalOut motor_lb(PTE3);
fraserhmbed 0:f54028dab58f 104 DigitalOut motor_rf(PTE4);
fraserhmbed 0:f54028dab58f 105 DigitalOut motor_rb(PTE5);
fraserhmbed 0:f54028dab58f 106
fraserhmbed 0:f54028dab58f 107 //Frequency of Pulse Width Modulated signal in Hz
fraserhmbed 0:f54028dab58f 108 #define PWM_FREQ 1000
fraserhmbed 0:f54028dab58f 109
fraserhmbed 0:f54028dab58f 110 //PWM pin (Enable 1 and 2)
fraserhmbed 0:f54028dab58f 111 PwmOut motor_l (PTC2);
fraserhmbed 0:f54028dab58f 112 PwmOut motor_r (PTE29);
fraserhmbed 0:f54028dab58f 113
fraserhmbed 0:f54028dab58f 114 //LED to test
fraserhmbed 0:f54028dab58f 115 DigitalOut myled(LED_BLUE);
fraserhmbed 0:f54028dab58f 116
fraserhmbed 0:f54028dab58f 117 void set_direction( int direction, float speed, float angle)
fraserhmbed 0:f54028dab58f 118 {
fraserhmbed 0:f54028dab58f 119 /* *******************Example Use*****************
fraserhmbed 0:f54028dab58f 120 set_direction("11", 0.5, 0); //This would set the robot to go forward, at half speed, straight
fraserhmbed 0:f54028dab58f 121
fraserhmbed 0:f54028dab58f 122 set_directin( "11", 0.8, 0.2); //this would set robot to go forward, at 100% to the right and 60% to the left (turn right)
fraserhmbed 0:f54028dab58f 123
fraserhmbed 0:f54028dab58f 124 set_direction("00", 0.3, 0.7); //robot back, 100% rightmotor; 0%left (technically -40%, but 0% is min)
fraserhmbed 0:f54028dab58f 125
fraserhmbed 0:f54028dab58f 126 set_direction("11", 0.5, 0.5); // robot pivots forward, to the right, full speed (100% duty right ; 0% duty left)
fraserhmbed 0:f54028dab58f 127
fraserhmbed 0:f54028dab58f 128 set_direction("11", 0.5, -0.5); //robot pivots forward, to the left, full speed (0% duty right ; 100% duty left)
fraserhmbed 0:f54028dab58f 129
fraserhmbed 0:f54028dab58f 130 set_direction("11", 0.3, 0.5); //robot pivots forard, to the right , at 80% speed (80% right; 0% left)
fraserhmbed 0:f54028dab58f 131
fraserhmbed 0:f54028dab58f 132 set_direction("11", -0.3, 0.5); //robot pivotrs foward, to the right, AT 20% SPEED (20%, 0%)
fraserhmbed 0:f54028dab58f 133
fraserhmbed 0:f54028dab58f 134 set_direction("10", 0.5, 0); //robot spins to teh right, at half speed. Left forward 50% ; Right forward 50%
fraserhmbed 0:f54028dab58f 135
fraserhmbed 0:f54028dab58f 136 set_direction("10", 0.5, 0.3); //robot spins to the right, 80% right forward ; 20% left backward
fraserhmbed 0:f54028dab58f 137
fraserhmbed 0:f54028dab58f 138 */
fraserhmbed 0:f54028dab58f 139
fraserhmbed 0:f54028dab58f 140 float r_result = (speed + angle); //where angle can be postive and negative and will TURN the robot
fraserhmbed 0:f54028dab58f 141 float l_result = (speed - angle); //if turning left, you'd make the angle postive (right motor goes faster left motor goes slwoer)
fraserhmbed 0:f54028dab58f 142 switch( direction ) {
fraserhmbed 0:f54028dab58f 143 case 0x11: { //forward
fraserhmbed 0:f54028dab58f 144 motor_r.write( r_result < 0 ? 0 : r_result > 1 ? 1 : r_result);
fraserhmbed 0:f54028dab58f 145 //Look up ternary statements -- {condition ? value_if_true : value_if_false} This makes 0<result<1
fraserhmbed 0:f54028dab58f 146 motor_l.write( l_result < 0 ? 0 : l_result > 1 ? 1 : l_result);
fraserhmbed 0:f54028dab58f 147
fraserhmbed 0:f54028dab58f 148 motor_rf=1;
fraserhmbed 0:f54028dab58f 149 motor_rb=0;
fraserhmbed 0:f54028dab58f 150 motor_lf=1;
fraserhmbed 0:f54028dab58f 151 motor_lb=0;
fraserhmbed 0:f54028dab58f 152 }
fraserhmbed 0:f54028dab58f 153 case 0x00: { //backward
fraserhmbed 0:f54028dab58f 154 motor_r.write( r_result < 0 ? 0 : r_result > 1 ? 1 : r_result);
fraserhmbed 0:f54028dab58f 155 motor_l.write( l_result < 0 ? 0 : l_result > 1 ? 1 : l_result);
fraserhmbed 0:f54028dab58f 156
fraserhmbed 0:f54028dab58f 157 motor_rf=0;
fraserhmbed 0:f54028dab58f 158 motor_rb=1;
fraserhmbed 0:f54028dab58f 159 motor_lf=0;
fraserhmbed 0:f54028dab58f 160 motor_lb=1;
fraserhmbed 0:f54028dab58f 161 }
fraserhmbed 0:f54028dab58f 162 case 0x01: { //spin left -- Right forward, left backward
fraserhmbed 0:f54028dab58f 163 motor_r.write( r_result < 0 ? 0 : r_result > 1 ? 1 : r_result);
fraserhmbed 0:f54028dab58f 164 motor_l.write( l_result < 0 ? 0 : l_result > 1 ? 1 : l_result);
fraserhmbed 0:f54028dab58f 165
fraserhmbed 0:f54028dab58f 166 motor_rf=1;
fraserhmbed 0:f54028dab58f 167 motor_rb=0;
fraserhmbed 0:f54028dab58f 168 motor_lf=0;
fraserhmbed 0:f54028dab58f 169 motor_lb=1;
fraserhmbed 0:f54028dab58f 170 }
fraserhmbed 0:f54028dab58f 171 case 0x10: { //spin right
fraserhmbed 0:f54028dab58f 172 motor_r.write( r_result < 0 ? 0 : r_result > 1 ? 1 : r_result);
fraserhmbed 0:f54028dab58f 173 motor_l.write( l_result < 0 ? 0 : l_result > 1 ? 1 : l_result);
fraserhmbed 0:f54028dab58f 174
fraserhmbed 0:f54028dab58f 175 motor_rf=0;
fraserhmbed 0:f54028dab58f 176 motor_rb=1;
fraserhmbed 0:f54028dab58f 177 motor_lf=1;
fraserhmbed 0:f54028dab58f 178 motor_lb=0;
fraserhmbed 0:f54028dab58f 179 }
fraserhmbed 0:f54028dab58f 180 }
fraserhmbed 0:f54028dab58f 181 }
fraserhmbed 0:f54028dab58f 182
fraserhmbed 0:f54028dab58f 183
Dbee16 1:c4af0bbe20b9 184 void SpinFunct()
Dbee16 1:c4af0bbe20b9 185 {
fraserhmbed 0:f54028dab58f 186 //Set PWM frequency to 1000Hz
fraserhmbed 0:f54028dab58f 187 motor_l.period( 1.0f / (float) PWM_FREQ);
fraserhmbed 0:f54028dab58f 188 motor_r.period( 1.0f / (float) PWM_FREQ);
fraserhmbed 0:f54028dab58f 189 //Initialise direction to nothing.
fraserhmbed 0:f54028dab58f 190 motor_rf=0;
fraserhmbed 0:f54028dab58f 191 motor_rb=0;
fraserhmbed 0:f54028dab58f 192 motor_lf=0;
Dbee16 1:c4af0bbe20b9 193 motor_lb=0;
fraserhmbed 0:f54028dab58f 194 led=1;
fraserhmbed 0:f54028dab58f 195 set_direction(0x10, 0.5, 0.3); //robot spins to the right, 80% right forward ; 20% left backward
Dbee16 1:c4af0bbe20b9 196 wait(5);
Dbee16 1:c4af0bbe20b9 197 led=0;
Dbee16 1:c4af0bbe20b9 198
fraserhmbed 0:f54028dab58f 199 }
fraserhmbed 0:f54028dab58f 200
Dbee16 1:c4af0bbe20b9 201 void JiveFunct()
Dbee16 1:c4af0bbe20b9 202 {
Dbee16 1:c4af0bbe20b9 203
fraserhmbed 0:f54028dab58f 204 //Set PWM frequency to 1000Hz
fraserhmbed 0:f54028dab58f 205 motor_l.period( 1.0f / (float) PWM_FREQ);
fraserhmbed 0:f54028dab58f 206 motor_r.period( 1.0f / (float) PWM_FREQ);
fraserhmbed 0:f54028dab58f 207 //Initialise direction to nothing.
fraserhmbed 0:f54028dab58f 208 motor_rf=0;
fraserhmbed 0:f54028dab58f 209 motor_rb=0;
fraserhmbed 0:f54028dab58f 210 motor_lf=0;
fraserhmbed 0:f54028dab58f 211 motor_lb=0;
Dbee16 1:c4af0bbe20b9 212
Dbee16 1:c4af0bbe20b9 213 //forward + right spin
Dbee16 1:c4af0bbe20b9 214 wait(2);
Dbee16 1:c4af0bbe20b9 215 myled = !myled;
Dbee16 1:c4af0bbe20b9 216 set_direction(0x11, 0.3, 0.5); //robot pivots forard, to the right , at 80% speed (80% right; 0% left)
Dbee16 1:c4af0bbe20b9 217
Dbee16 1:c4af0bbe20b9 218 // back spin
Dbee16 1:c4af0bbe20b9 219 wait(2);
Dbee16 1:c4af0bbe20b9 220 myled = !myled;
Dbee16 1:c4af0bbe20b9 221 set_direction(0x00, 0.3, 0.7); //robot back, 100% rightmotor; 0%left (technically -40%, but 0% is min)
Dbee16 1:c4af0bbe20b9 222
Dbee16 1:c4af0bbe20b9 223 //
Dbee16 1:c4af0bbe20b9 224 wait(2);
Dbee16 1:c4af0bbe20b9 225 myled = !myled;
Dbee16 1:c4af0bbe20b9 226 set_direction(0x01, 0.3, 0.4); //robot spins to teh left, at half speed. Left forward 70% ; Right 0% (technically -30%, but 0% is min)
Dbee16 1:c4af0bbe20b9 227
Dbee16 1:c4af0bbe20b9 228 wait(2);
Dbee16 1:c4af0bbe20b9 229 myled = !myled;
Dbee16 1:c4af0bbe20b9 230 set_direction(0x10, 0.5, 0); //robot spins to teh right, at half speed. Left forward 50% ; Right forward 50%
Dbee16 1:c4af0bbe20b9 231
Dbee16 1:c4af0bbe20b9 232
Dbee16 1:c4af0bbe20b9 233 /*
Dbee16 1:c4af0bbe20b9 234 wait(2);
Dbee16 1:c4af0bbe20b9 235 led = !led;
Dbee16 1:c4af0bbe20b9 236 set_direction(0x11, 0.5, 0); //This would set the robot to go forward, at half speed, straight
fraserhmbed 0:f54028dab58f 237
Dbee16 1:c4af0bbe20b9 238 wait(2);
Dbee16 1:c4af0bbe20b9 239 led = !led;
Dbee16 1:c4af0bbe20b9 240 set_direction(0x11, 0.8, 0.2); //this would set robot to go forward, at 100% to the right and 60% to the left (turn right)
fraserhmbed 0:f54028dab58f 241
Dbee16 1:c4af0bbe20b9 242 wait(2);
Dbee16 1:c4af0bbe20b9 243 led = !led;
Dbee16 1:c4af0bbe20b9 244 set_direction(0x11, 0.5, 0.5); // robot pivots forward, to the right, full speed (100% duty right ; 0% duty left)
fraserhmbed 0:f54028dab58f 245
Dbee16 1:c4af0bbe20b9 246 wait(2);
Dbee16 1:c4af0bbe20b9 247 led = !led;
Dbee16 1:c4af0bbe20b9 248 set_direction(0x11, 0.5, -0.5); //robot pivots forward, to the left, full speed (0% duty right ; 100% duty left)
Dbee16 1:c4af0bbe20b9 249
Dbee16 1:c4af0bbe20b9 250
fraserhmbed 0:f54028dab58f 251
Dbee16 1:c4af0bbe20b9 252 wait(2);
Dbee16 1:c4af0bbe20b9 253 led = !led;
Dbee16 1:c4af0bbe20b9 254 set_direction(0x11, -0.3, 0.5); //robot pivotrs foward, to the right, AT 20% SPEED (20%, 0%)
fraserhmbed 0:f54028dab58f 255
Dbee16 1:c4af0bbe20b9 256 wait(2);
Dbee16 1:c4af0bbe20b9 257 led = !led;
Dbee16 1:c4af0bbe20b9 258 set_direction(0x10, 0.5, 0); //robot spins to teh right, at half speed. Left forward 50% ; Right forward 50%
Dbee16 1:c4af0bbe20b9 259
Dbee16 1:c4af0bbe20b9 260 wait(2);
Dbee16 1:c4af0bbe20b9 261 led = !led;
Dbee16 1:c4af0bbe20b9 262 set_direction(0x10, 0.5, 0.3); //robot spins to the right, 80% right forward ; 20% left backward
Dbee16 1:c4af0bbe20b9 263 */
Dbee16 1:c4af0bbe20b9 264
fraserhmbed 0:f54028dab58f 265 }
fraserhmbed 0:f54028dab58f 266
fraserhmbed 0:f54028dab58f 267
fraserhmbed 0:f54028dab58f 268 // will just make a question at the end to say quit? yes or no. it's possible to make a quitter function and test the input for quit
fraserhmbed 0:f54028dab58f 269 // at every point but it's too annoying to get it to work... so fuk dat
fraserhmbed 0:f54028dab58f 270
Dbee16 1:c4af0bbe20b9 271 void RemoteControl()
Dbee16 1:c4af0bbe20b9 272 {
Dbee16 1:c4af0bbe20b9 273 char dir[2]; /*speed=0, angle=0, time=0, */
Dbee16 1:c4af0bbe20b9 274 int quit=0;
fraserhmbed 0:f54028dab58f 275
fraserhmbed 0:f54028dab58f 276 while(quit==0) {
fraserhmbed 0:f54028dab58f 277 wait(1);
fraserhmbed 0:f54028dab58f 278 //dir
fraserhmbed 0:f54028dab58f 279 blue.printf("Direction?\n");
Dbee16 1:c4af0bbe20b9 280 while ( blue.readable()==0 ) {} // loops until there is an input from the user
Dbee16 1:c4af0bbe20b9 281
Dbee16 1:c4af0bbe20b9 282 for(int i=0; i<2; i++) {
Dbee16 1:c4af0bbe20b9 283 dir[i] = blue.getc(); //Store incoming response into array
Dbee16 1:c4af0bbe20b9 284 }
fraserhmbed 0:f54028dab58f 285 blue.printf("%c dir\n", dir);
Dbee16 1:c4af0bbe20b9 286
fraserhmbed 0:f54028dab58f 287 }
fraserhmbed 0:f54028dab58f 288 }
Dbee16 1:c4af0bbe20b9 289 //for(int i=0; i<4; i++) { quitarray[i]= blue.getc(); blue.printf("get %c", quitarray[i]); } //Store incoming response into array
Dbee16 1:c4af0bbe20b9 290 //quit=Quitter(quitarray);
Dbee16 1:c4af0bbe20b9 291
Dbee16 1:c4af0bbe20b9 292 /*
Dbee16 1:c4af0bbe20b9 293 //speed
Dbee16 1:c4af0bbe20b9 294 blue.printf("Speed?");
Dbee16 1:c4af0bbe20b9 295 while ( blue.readable() ) {} // loops until there is an input from the user
Dbee16 1:c4af0bbe20b9 296 speed=blue.getc();
Dbee16 1:c4af0bbe20b9 297 quit=Quitter();
Dbee16 1:c4af0bbe20b9 298
Dbee16 1:c4af0bbe20b9 299
Dbee16 1:c4af0bbe20b9 300 //angle
Dbee16 1:c4af0bbe20b9 301 blue.printf("Angle?");
Dbee16 1:c4af0bbe20b9 302 while (blue.readable()==0) {} // loops until there is an input from the user
Dbee16 1:c4af0bbe20b9 303 angle=blue.getc();
Dbee16 1:c4af0bbe20b9 304 quit=Quitter();
Dbee16 1:c4af0bbe20b9 305
Dbee16 1:c4af0bbe20b9 306
Dbee16 1:c4af0bbe20b9 307 //time
Dbee16 1:c4af0bbe20b9 308 blue.printf("How long?");
Dbee16 1:c4af0bbe20b9 309 while (blue.readable()==0) {} // loops until there is an input from the user
Dbee16 1:c4af0bbe20b9 310 time=blue.getc();
Dbee16 1:c4af0bbe20b9 311 quit=Quitter();
Dbee16 1:c4af0bbe20b9 312 */
Dbee16 1:c4af0bbe20b9 313 //set_direction(dir, speed, angle); //also find a way to do time too
Dbee16 1:c4af0bbe20b9 314 //wait(time);
Dbee16 1:c4af0bbe20b9 315
Dbee16 1:c4af0bbe20b9 316
Dbee16 1:c4af0bbe20b9 317 /*
fraserhmbed 0:f54028dab58f 318
Dbee16 1:c4af0bbe20b9 319 send 11, 0.5, 0.2 in one string
Dbee16 1:c4af0bbe20b9 320 for the floats, it will send (num)(point)(num) ef 0.3 = 30, 2E, 33
Dbee16 1:c4af0bbe20b9 321 all in ASCII remember
Dbee16 1:c4af0bbe20b9 322
Dbee16 1:c4af0bbe20b9 323 so for:
Dbee16 1:c4af0bbe20b9 324 11 0.5 0.2
Dbee16 1:c4af0bbe20b9 325 it will send:
Dbee16 1:c4af0bbe20b9 326 31 31 20 30 2e 35 20 30 2e 32
Dbee16 1:c4af0bbe20b9 327
Dbee16 1:c4af0bbe20b9 328 sending 313120302e3520302e32 would cause a stack overload
Dbee16 1:c4af0bbe20b9 329
Dbee16 1:c4af0bbe20b9 330 going to have to split the user into 3 different lines of tx
Dbee16 1:c4af0bbe20b9 331
Dbee16 1:c4af0bbe20b9 332 so it'd be simpler too but more difficult for the user to control.
Dbee16 1:c4af0bbe20b9 333 might need to add in a "for how long for?" function that will only drive the motors for a short period of time
fraserhmbed 0:f54028dab58f 334
Dbee16 1:c4af0bbe20b9 335 user would have to be knowledgeable of the set direction function aka get daniel to do the demonstration
Dbee16 1:c4af0bbe20b9 336
Dbee16 1:c4af0bbe20b9 337 so then user sends: direction 11,10,01; speed 0.2,0.5,0.7; angle 0.2,0.4,0.8; time 1,2,3,4;
Dbee16 1:c4af0bbe20b9 338
Dbee16 1:c4af0bbe20b9 339 yes it is slow, but it allows for exact computation of distance, speed and angle
Dbee16 1:c4af0bbe20b9 340
Dbee16 1:c4af0bbe20b9 341 so 1 function with 4 different while loops
fraserhmbed 0:f54028dab58f 342
Dbee16 1:c4af0bbe20b9 343 while user has not input a direction, loop again
Dbee16 1:c4af0bbe20b9 344
Dbee16 1:c4af0bbe20b9 345 one function : remote control
Dbee16 1:c4af0bbe20b9 346 */
fraserhmbed 0:f54028dab58f 347
Dbee16 1:c4af0bbe20b9 348 int main()
Dbee16 1:c4af0bbe20b9 349 {
Dbee16 1:c4af0bbe20b9 350
Dbee16 1:c4af0bbe20b9 351 int spin[4] = {0x73, 0x70, 0x69, 0x6e};
fraserhmbed 0:f54028dab58f 352 int jive[4] = {0x6a, 0x69, 0x76, 0x65};
fraserhmbed 0:f54028dab58f 353 int ctrl[4] = {0x63, 0x74, 0x72, 0x6c};
fraserhmbed 0:f54028dab58f 354 int maze[4] = {0x6d, 0x61, 0x7a, 0x65};
fraserhmbed 0:f54028dab58f 355 unsigned char x[4];
fraserhmbed 0:f54028dab58f 356
fraserhmbed 0:f54028dab58f 357 while (1) {
fraserhmbed 0:f54028dab58f 358 blue.printf("What will I do?\n"); // ask user question
fraserhmbed 0:f54028dab58f 359 while (blue.readable()==0) {} // loops until there is an input from the user
Dbee16 1:c4af0bbe20b9 360
Dbee16 1:c4af0bbe20b9 361 for(int i=0; i<4; i++) {
Dbee16 1:c4af0bbe20b9 362 x[i] = blue.getc(); //Store incoming response into array
Dbee16 1:c4af0bbe20b9 363 }
Dbee16 1:c4af0bbe20b9 364
Dbee16 1:c4af0bbe20b9 365 int FindSpin=0, FindJive=0, FindCtrl=0, FindMaze=0;
fraserhmbed 0:f54028dab58f 366
Dbee16 1:c4af0bbe20b9 367 for(int s=0; s<4; s++) {
Dbee16 1:c4af0bbe20b9 368 if (x[s]==spin[s]) {
Dbee16 1:c4af0bbe20b9 369 FindSpin++;
Dbee16 1:c4af0bbe20b9 370 }
Dbee16 1:c4af0bbe20b9 371 if (x[s]==jive[s]) {
Dbee16 1:c4af0bbe20b9 372 FindJive++;
Dbee16 1:c4af0bbe20b9 373 }
Dbee16 1:c4af0bbe20b9 374 if (x[s]==ctrl[s]) {
Dbee16 1:c4af0bbe20b9 375 FindCtrl++;
Dbee16 1:c4af0bbe20b9 376 }
Dbee16 1:c4af0bbe20b9 377 if (x[s]==maze[s]) {
Dbee16 1:c4af0bbe20b9 378 FindMaze++;
Dbee16 1:c4af0bbe20b9 379 }
fraserhmbed 0:f54028dab58f 380 }
Dbee16 1:c4af0bbe20b9 381
Dbee16 1:c4af0bbe20b9 382 if (FindSpin==4) {
Dbee16 1:c4af0bbe20b9 383 SpinFunct();
Dbee16 1:c4af0bbe20b9 384 }
Dbee16 1:c4af0bbe20b9 385 if (FindJive==4) {
Dbee16 1:c4af0bbe20b9 386 JiveFunct();
Dbee16 1:c4af0bbe20b9 387 }
Dbee16 1:c4af0bbe20b9 388 if (FindCtrl==4) {
Dbee16 1:c4af0bbe20b9 389 RemoteControl() ;
Dbee16 1:c4af0bbe20b9 390 }
Dbee16 1:c4af0bbe20b9 391 if (FindMaze==4) {
Dbee16 1:c4af0bbe20b9 392 led=1;
Dbee16 1:c4af0bbe20b9 393 wait(4);
Dbee16 1:c4af0bbe20b9 394 led=0;
Dbee16 1:c4af0bbe20b9 395 }
fraserhmbed 0:f54028dab58f 396 }
fraserhmbed 0:f54028dab58f 397 }
fraserhmbed 0:f54028dab58f 398
fraserhmbed 0:f54028dab58f 399
fraserhmbed 0:f54028dab58f 400
fraserhmbed 0:f54028dab58f 401
fraserhmbed 0:f54028dab58f 402
fraserhmbed 0:f54028dab58f 403
fraserhmbed 0:f54028dab58f 404
fraserhmbed 0:f54028dab58f 405
fraserhmbed 0:f54028dab58f 406
fraserhmbed 0:f54028dab58f 407
fraserhmbed 0:f54028dab58f 408 /*
fraserhmbed 0:f54028dab58f 409 int Quitter(char x[4]) { int quit=0; char quitting[4]={0x71, 0x75, 0x69, 0x74};
Dbee16 1:c4af0bbe20b9 410
fraserhmbed 0:f54028dab58f 411 blue.printf ("works");
Dbee16 1:c4af0bbe20b9 412 for(int i=0; i<4; i++) { x[i] = blue.getc(); } //Store incoming response into array
Dbee16 1:c4af0bbe20b9 413 for(int s=0; s<4; s++) {
fraserhmbed 0:f54028dab58f 414 if (x[s]==quitting[s]) { quit++; }
fraserhmbed 0:f54028dab58f 415 }
fraserhmbed 0:f54028dab58f 416 if (quit==4) { quit=1;}
fraserhmbed 0:f54028dab58f 417 return quit;
fraserhmbed 0:f54028dab58f 418 }
fraserhmbed 0:f54028dab58f 419 */