Team Design project 3 main file

Dependencies:   LocalPositionSystem MMA8451Q Motor_Driver Sensors mbed

Fork of TDP_main by Yelfie

Revision:
26:7b67bcbddde3
Parent:
24:ecc3fbaf2824
--- a/main.cpp	Mon Mar 23 12:38:53 2015 +0000
+++ b/main.cpp	Mon Mar 23 14:04:24 2015 +0000
@@ -28,8 +28,8 @@
 mode driveMode; //declaring the variable for the states
 int sensorsCheckSum; //varibale used for sensors mapping access
 int passedTime1,passedTime2;
-int values_old[5] = {0};
-int cursor = 0;
+int oldValues[5] = {0};
+int cursor = 0, k = 0;
 
 
 void measureSensors () {
@@ -44,8 +44,8 @@
             sensorsCheckSum += (i+1)*(i+1);
         }
      }
-     if (values_old[cursor] != sensorsCheckSum) { //why only if different ??
-        values_old[cursor] = sensorsCheckSum;
+     if (oldValues[cursor] != sensorsCheckSum) { //why only if different ??
+        oldValues[cursor] = sensorsCheckSum;
         cursor = (cursor+1)%5;
      }
      //pc.printf("sensorsCheckSum is %i",sensorsCheckSum);
@@ -103,7 +103,7 @@
     wait(1); //give time to set up the system
     
     sensorTimer.start(); // start timer for sensors
-    float normalSpeed = 0.01f;
+//    float normalSpeed = 0.01f;
 
     while(1){
         if (pc.getc() == 'r') {
@@ -127,118 +127,134 @@
 //            motors.setSpeed(normalSpeed);
 //        }
 
-    int testOtherCases = 0; //needed for control statements
+//    int testOtherCases = 0; //needed for control statements
     while (1) {
-       
-              if (driveMode == REGULAR) {
-          measureSensors();
-          switch (sensorsCheckSum) {
-         case 0: // all black, turn around by 180 degrees or a possible turn on the left
-                for (k=0;k<6;k++) {        //left turn situation
-                if (oldValues[k] == 194) {
-                motors.stop();
-                motors.setSteeringMode(NORMAL);
-                motors.reverse();
-                motors.setSpeed(0.1f);
-                motors.start();
-                wait(1);
-                motors.stop();
-            } else {            
-                motors.stop();
-                motors.setSteeringMode(NORMAL);
-                motors.reverse();
-                motors.setSpeed(0.1f);
-                motors.start();
-                wait(2);
-                motors.stop();
-                motors.setSteeringMode(PIVOT_CCW);
-                motors.setSpeed(0.1f);
-                do
-                {
-                motors.start();
-                measureSensors();
-                } while (sensorsCheckSum != 96);
-                motors.stop();
-                motors.setSteeringMode(NORMAL);
-            } 
+//        if (driveMode == REGULAR) {
+//                measureSensors();
+                switch (sensorsCheckSum) {
+                case 0: // all black, turn around by 180 degrees or a possible turn on the left
+                    for (k=0;k<6;k++) {                             //left turn situation >> stop, go backwards
+                        if (oldValues[k] == 194) {
+                            motors.stop();
+                            motors.setSteeringMode(NORMAL);
+                            motors.reverse();
+                            motors.setSpeed(0.1f);
+                            motors.start();
+                            wait(2);
+                            motors.stop();
+                        } else {                                    //dead end situation >> stop, go a bit backwards so there is space for turning and turn CCW
+                            motors.stop();
+                            motors.setSteeringMode(NORMAL);
+                            motors.reverse();
+                            motors.setSpeed(0.1f);
+                            motors.start();
+                            wait(2);
+                            motors.stop();
+                            motors.setSteeringMode(PIVOT_CCW);
+                            motors.setSpeed(0.1f);
+                            do
+                            {   
+                            motors.start();
+                            measureSensors();
+                            } while (sensorsCheckSum != 96);
+                            motors.stop();
+                        }
+                    } 
             break;
-        case 30: //all right are white, left all black >> turn right(move left wheel)
+          case 30:                                                  //all right are white, left all black >> turn right(move left wheel faster)
             motors.setSteeringMode(NORMAL);
             motors.forward();
-            motors.setRightSpeed(0.15f);
-            motors.setLeftSpeed(0.5f);
+            motors.setRightSpeed(0.1f);
+            motors.setLeftSpeed(0.05f);
+            do
+            {   
+            motors.start();
+            measureSensors();
+            } while (sensorsCheckSum == 30);
+            motors.stop();
             break;
-//        case 46: //left 5 white, right only 3 black >> turn right
-//            motors.setRightSpeed(0.15f);
-//            motors.setLeftSpeed(0.1f);
-//            break;
+
         case 94: //normal <<STARTING POSITION>>, half of right and half of left are white
             motors.setSteeringMode(NORMAL);
             motors.forward();
             motors.setSpeed(0.1f);
+            do
+            {   
+            motors.start();
+            measureSensors();
+            } while (sensorsCheckSum == 94);
+            motors.start();
+            break;
+        case 104: //right all white, left half white >> turn right
+            motors.setSteeringMode(NORMAL);
+            motors.forward();
+            motors.setSpeed(0.1f);
             motors.start();
-            break;
-        case 104: //right all white, left half white >> turn right
-            motors.setRightSpeed(0.1f);
-            motors.setLeftSpeed(0.15f);
+            wait(1);
+            motors.stop();
+            motors.setRightSpeed(0.2f);
+            motors.setLeftSpeed(0.0f);
+            do
+            {   
+            motors.start();
+            measureSensors();
+            } while (sensorsCheckSum <= 94);
+            motors.stop();
             break;
-//        case 154: //right 4 white, left only 6 black >> turn left
-//            break;
         case 174: //left all white, right all black >> turn left (move right wheel)
+            motors.setSteeringMode(NORMAL);
+            motors.forward();
             motors.setRightSpeed(0.05f);
-            motors.setLeftSpeed(0.15f);
-            break;
-        case 194 : //left all white, right half white >> go straight, turn right if 194 goes to 204        
+            motors.setLeftSpeed(0.1f);
+            do
+            {   
+            motors.start();
+            measureSensors();
+            } while (sensorsCheckSum == 174);
             break;
-        case 204 : //all sensors are white
-                       
-        for (k=0;k<6;k++) {                 //situation when a square is entered, need to follow right line
-            if (oldValues[k] == 194) {      //checks whether  black line on the right was present before
-            motors.setRightSpeed(0.15f);
-            motors.setLeftSpeed(0.05f);
-            }
-        
-            if (oldValues[k] == 104) {          //right turn 90 situation
-            motors.stop();
-            motors.setSteeringMode(PIVOT_CW);
-            motors.setRightSpeed(0.1f);
-            motors.setLeftSpeed(0.1f);
-                do
-                {
-                motors.start();
-                measureSensors();
-                } while (sensorsCheckSum != 94);
-                motors.stop();
-                motors.setSteeringMode(NORMAL);
-        }            
+        case 194 : //left all white, right half white >> go straight, turn right if 194 goes to 204
+            motors.setSteeringMode(NORMAL);
+            motors.forward();
+            motors.setRightSpeed(0.05f);
+            motors.setLeftSpeed(0.1f)
+            do
+            {   
+            motors.start();
+            measureSensors();
+            } while (sensorsCheckSum == 194);
+            motors.stop();       //do while left is white
+            break;
+        case 204 : //all sensors are white                 
+            for (k=0;k<6;k++) {                 //situation when a square is entered, need to follow right line
+                if (oldValues[k] == 194) {      //checks whether  black line on the right was present before
+                    motors.setSteeringMode(NORMAL);
+                    motors.setRightSpeed(0.05f);
+                    motors.setLeftSpeed(0.1f);
+                    do
+                    {   
+                    motors.start();
+                    measureSensors();
+                    } while (sensorsCheckSum == 204);
+                    motors.stop();
+                }
+                if (oldValues[k] == 104) {          //right turn 90 situation
+                    motors.setSteeringMode(PIVOT_CW);
+                    motors.setRightSpeed(0.1f);
+                    motors.setLeftSpeed(0.1f);
+                    do
+                    {
+                    motors.start();
+                    measureSensors();
+                    } while (sensorsCheckSum != 94);
+                    motors.stop();
+                }            
         break;              
-            
-        default: //checksum is zero , all are black
+        default:
             measureSensors(); 
             break;
         }
     }
-//        if (testOtherCases == 1) {
-//            if (sensorsCheckSum < 96){ // adjust right
-//            } else {//adjust left
-//            }
-//            testOtherCases = 0;
-//        } else { //if (driveMode == SQUARE}  //implement the square searching thing.
-        }
-    }
- 
-          if (testOtherCases == 1) {
-            if (sensorsCheckSum < 96){ // adjust right
-                }   
-            else   {//adjust left
-                }
-            testOtherCases = 0;
-          }    
-//        }
-//       else { //if (driveMode == SQUARE}
-//        //implement the square searching thing..
-
-
-
-
-
+}
+}
+}
+}