Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Revision 46:b156ef445742, committed 2017-06-03
- Comitter:
- sahilmgandhi
- Date:
- Sat Jun 03 00:22:44 2017 +0000
- Parent:
- 45:8b0bee6baf38
- Commit message:
- Final code for internal battlebot competition.
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
main.h | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Fri Jun 02 19:35:26 2017 +0000 +++ b/main.cpp Sat Jun 03 00:22:44 2017 +0000 @@ -44,6 +44,14 @@ void pidOnEncoders(); +void moveBackwards(){ + right_motor.move(-WHEEL_SPEED); + left_motor.move(-WHEEL_SPEED); + wait_ms(40); + right_motor.brake(); + left_motor.brake(); +} + void moveForwardEncoder(double num) { int count0; @@ -64,7 +72,7 @@ receiverFourReading = IRP_4.getSamples(100); right_motor.move(speed0); left_motor.move(speed1); - wait_ms(100); + wait_ms(150); double distance_to_go = (oneCellCount)*num; @@ -109,7 +117,7 @@ right_motor.move(speed0); left_motor.move(speed1); - wait_us(100000); + wait_us(150000); double distance_to_go = (oneCellCount)*num; @@ -320,7 +328,17 @@ int state = 0; + int previousCount0 = 10000; + int previousCount1 = 10000; + while (encoder0.getPulses() <= desiredCount0 && encoder1.getPulses() <= desiredCount1) { + int currCount0 = encoder0.getPulses(); + int currCount1 = encoder1.getPulses(); + // serial.printf("currCount0 = %d, currCount1 =%d, previousCount0 = %d, previousCount1 = %d \n", currCount0, currCount1, previousCount0, previousCount1); + // if (abs(currCount0 - previousCount0) <= 2 || abs(currCount1 - previousCount1) <= 2){ + // moveBackwards(); + // return; + // } // serial.printf("The desiredCount0 is: %d \t The desiredCount1 is: %d\t the 0encoderval is :%d\t the 1encoderval is : %d\t\n", desiredCount0, desiredCount1, encoder0.getPulses(), encoder1.getPulses()); receiverTwoReading = IRP_2.getSamples( SAMPLE_NUM ); receiverThreeReading = IRP_3.getSamples( SAMPLE_NUM ); @@ -436,6 +454,8 @@ pidOnEncoders(); previousError = currentError; + previousCount1 = currCount1; + previousCount0 = currCount0; } // GO BACK A BIT BEFORE BRAKING?? @@ -898,73 +918,31 @@ // moveForwardEncoder(1); while (1) { - - if (!overrideFloodFill) { - nextMovement = chooseNextMovement(); - if (nextMovement == 0) { - moveForwardEncoder(0.4); - nCellEncoderAndIR(0.6); - } else if (nextMovement == 1) { - justTurned = true; - turnRight(); - } else if (nextMovement == 2) { - justTurned = true; - turnLeft(); - } else if (nextMovement == 3) { - nCellEncoderAndIR(1); - //encoderAfterTurn(1); - } else if (nextMovement == 4) { - justTurned = true; - turn180(); - } - } else { - receiverOneReading = IRP_1.getSamples(100); - receiverTwoReading = IRP_2.getSamples(100); - receiverThreeReading = IRP_3.getSamples(100); - receiverFourReading = IRP_4.getSamples(100); - - if(receiverOneReading > IRP_1.sensorAvg * frontStop || receiverFourReading > IRP_4.sensorAvg * frontStop ) { - - int randomNum = rand() %2; - if(randomNum == 0) { - turnRight(); - } else { - turnLeft(); - } - } else if ((receiverTwoReading > ((IRP_2.sensorAvg)*averageDivUpper)) && (receiverThreeReading > ((IRP_3.sensorAvg)*averageDivUpper))) { - // both walls there - nCellEncoderAndIR(1); - redLed.write(1); - greenLed.write(0); - blueLed.write(1); - } else if((receiverThreeReading < IRP_3.sensorAvg/5) && (receiverTwoReading < IRP_2.sensorAvg/5)) { - // both sides gone - - redLed.write(1); - greenLed.write(0); - blueLed.write(0); - // serial.printf("Going to go over to move forward with encoder, and passing %f\n", valToPass); - moveForwardEncoder(1); - continue; - } else if (receiverThreeReading < IRP_3.sensorAvg/LRAvg) { // right wall gone RED - turnRight(); - redLed.write(0); - greenLed.write(1); - blueLed.write(1); - // moveForwardEncoder(valToPass); - // break; - } else if (receiverTwoReading < IRP_2.sensorAvg/LRAvg) { // left wall gone - turnLeft(); - redLed.write(1); - greenLed.write(1); - blueLed.write(0); - // moveForwardEncoder(valToPass); - // break; - } + if (receiverOneReading < IRP_1.sensorAvg * frontStop && receiverFourReading < IRP_4.sensorAvg * frontStop ){ + nCellEncoderAndIR(1); + continue; } - - wait_ms(500); // reduce this once we fine tune this! - + else if (receiverThreeReading < IRP_3.sensorAvg/LRAvg) { // right wall gone RED + turnRight(); + wait_ms(100); + moveForwardEncoder(0.4); + nCellEncoderAndIR(0.6); + continue; + } + else if (receiverTwoReading < IRP_2.sensorAvg/LRAvg) { // left wall gone + turnLeft(); + wait_ms(100); + moveForwardEncoder(0.4); + nCellEncoderAndIR(0.6); + continue; + } + else{ + turn180(); + wait_ms(100); + moveForwardEncoder(0.4); + nCellEncoderAndIR(0.6); + continue; + } //////////////////////// TESTING CODE GOES BELOW ///////////////////////////
--- a/main.h Fri Jun 02 19:35:26 2017 +0000 +++ b/main.h Sat Jun 03 00:22:44 2017 +0000 @@ -10,7 +10,7 @@ #define PULSES 3520 #define SAMPLE_NUM 40 -#define WHEEL_SPEED 0.10 +#define WHEEL_SPEED 0.12 // Motors /*