Don't want to screw something by updating the code as Ivelin updated himself while I was writing so I am forking it.

Dependencies:   LocalPositionSystem MMA8451Q Motor_Driver Sensors mbed

Fork of TDP_main by Yelfie

Files at this revision

API Documentation at this revision

Comitter:
Bartas
Date:
Sun Mar 22 23:55:20 2015 +0000
Parent:
24:c1b1b0ea0cb9
Commit message:
All the cases and turns theoretical code. Some could be missing and needs experimentation. Got rid of "goto" call.

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
diff -r c1b1b0ea0cb9 -r 8be440e10126 main.cpp
--- a/main.cpp	Sun Mar 22 14:57:21 2015 +0000
+++ b/main.cpp	Sun Mar 22 23:55:20 2015 +0000
@@ -40,7 +40,7 @@
 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 oldValues[5] = {0};
 int k = 0;
 
 
@@ -56,11 +56,11 @@
             sensorsCheckSum += (i+1)*(i+1);
         }
     }
-    if (values_old[0] != sensorsCheckSum) {
+    if (oldValues[0] != sensorsCheckSum) {
         for (k = 5; k > 0; k--) {
-            values_old[k] = values_old[k-1];
+            oldValues[k] = oldValues[k-1];
         }
-        values_old[0] = sensorsCheckSum;
+        oldValues[0] = sensorsCheckSum;
     }
     //pc.printf("sensorsCheckSum is %i",sensorsCheckSum);
 }
@@ -120,7 +120,7 @@
     wait(1); //give time to set up the system
     
     sensorTimer.start(); // start timer for sensors
-    float normalSpeed = 0.01f;
+//    float normalSpeed = 0.01f;
 //    HC06.baud(9600);
 //    HC06.printf("working..");
 //    motors.setSpeed(normalSpeed);
@@ -130,11 +130,11 @@
 //    
 //    
 //    wait(3);
-    while(1){
-        if (pc.getc() == 'r') {
-        measureSensors();
+ //   while(1){
+//        if (pc.getc() == 'r') {
+//        measureSensors();
         //measureTimer.reset();
-        printBluetooth();
+//        printBluetooth();
         //passedTime1 = measureTimer.read_ms();
         //if (sensorsCheckSum == 0) {
 //            motors.setSpeed(normalSpeed);
@@ -151,8 +151,8 @@
 //        else {
 //            motors.setSpeed(normalSpeed);
 //        }
-        }
-    }
+//        }
+//    }
 //HC06.printf("AT");
 //HC06.printf("AT+PIN5555");
     
@@ -169,39 +169,91 @@
           measureSensors();
         switch (sensorsCheckSum) {
         case 0: // all black, turn around by 180 degrees
-            goto turnAround; 
+                for (k=0;k<6;k++) {        //right turn situation
+                if (oldValues[k] == 194) {
+                motors.stop();
+                motors.setSteeringMode(NORMAL);
+                motors.reverse();
+                motors.setSpeed(0.1f);
+                motors.start();
+                wait(1);
+            } 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);
+            } 
             break;
         case 30: //all right are white, left all black >> turn right(move left wheel)
             motors.setRightSpeed(0.15f);
             motors.setLeftSpeed(0.5f);
             break;
-        case 46: //left 5 white, right only 3 black >> turn right
-            motors.setRightSpeed(0.15f);
-            motors.setLeftSpeed(0.5f);
-            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, (move right wheel)
+            motors.setSteeringMode(NORMAL);
             motors.setSpeed(0.1f);
-            motors.forward;
-            motors.start;
+            motors.forward();
+            motors.start();
             break;
-        case 104: //right all white, left half white >> turn right 90 degrees
-        
-            break;
-        case 154: //right 4 white, left only 6 black >> turn left
-        
+        case 104: //right all white, left half white >> turn right
+            motors.setRightSpeed(0.1f);
+            motors.setLeftSpeed(0.15f);
             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.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
-        
+        case 194 : //left all white, right half white >> go straight, turn right if 194 goes to 204        
             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);
+        }            
+        break;              
+            
         default: //checksum is zero , all are black
             measureSensors(); 
             break;
         }
+    }
+}
+}
+}
+}
 
 //        if (testOtherCases == 1) {
 //            if (sensorsCheckSum < 96){ // adjust right
@@ -209,8 +261,7 @@
 //            else   {//adjust left
 //                }
 //            testOtherCases = 0;
-//        }    
-          
+//        }           
 //              
 //        
 //           
@@ -223,27 +274,3 @@
 //       
 //    }
 //    
-        
-}
-
-turnAround:
-    motors.reverse;
-    motors.setSpeed(0.1f);
-    motors.start;
-    wait(2);
-    motors.stop;
-    motors.setSteeringMode(PIVOT_CCW);
-    motors.setSpeed(0.1f);
-    do
-    {
-        motors.start;
-    } while (sensorsCheckSum != 96);
-    return 0;
-}
-    
-
-
-
-
-
-