Just trying to update ccode.

Dependencies:   mbed

Fork of coolcarsuperfast by E=MC

Files at this revision

API Documentation at this revision

Comitter:
mawk2311
Date:
Mon Apr 06 19:28:45 2015 +0000
Parent:
9:ad08181ad1cc
Commit message:
Added a boolean that we can flip as well as if conditions so that we can more easily activate data collection. Also tweaked the hard right value for the servo. With this changed, it doesn't jump to extremes nearly as much when turning right.

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/main.cpp	Fri Apr 03 05:06:01 2015 +0000
+++ b/main.cpp	Mon Apr 06 19:28:45 2015 +0000
@@ -27,15 +27,18 @@
 float maxVal;
 int maxLoc;
 
+//Data Collection
+bool dataCol = false;
+
 //Line Crossing variables
 int prevTrackLoc;
-int spaceThresh = 5;
+int spaceThresh = 3;
 bool space;
 
 //Servo turning parameters
 float straight = 0.00155f;
 float hardLeft = 0.0010f;
-float hardRight = 0.0021f;
+float hardRight = 0.00195f;
 
 //Servo Directions
 float currDir;
@@ -71,7 +74,7 @@
 
 int numInterrupts = 0;
 
-float pulsewidth = 0.15f;
+float pulsewidth = 0.25f;
 
 // Hardware periods
 float motorPeriod = .0025;
@@ -80,7 +83,6 @@
 Timer t;
 Timer servoTimer;
 Timer printTimer; //after printTimer reaches a certain value the main loop will terminate and print the frames
-const float printTime = 5.0f;
 
 //Observed average speeds for each duty cycle
 const float DESIRED_SPEED = 1;
@@ -307,31 +309,27 @@
     break1 = 0;
     break2 = 0;
     
-    int loopCounterForModdingSoThatWeCanIncreaseTheRecordingTime = 0;
-    t.start();
-    printTimer.start();
-    //wait(5);
+    //t.start();
+    
+    if(dataCol){
+        int loopCounterForModdingSoThatWeCanIncreaseTheRecordingTime = 0;
+        printTimer.start();
+    }
 
     while(1) {
-        //break out of main loop if enough time has passed;    
-        if(loopCtr >= numData){
-            break;
+        if(dataCol){
+            //break out of main loop if enough time has passed;    
+            if(loopCtr >= numData && dataCol){
+                break;
+            }
         }
         if(integrationCounter % 151== 0){
+            /*
             //Disable interrupts
             interrupt.fall(NULL);
             interrupt.rise(NULL);
-          
-            /*
-            // copy frame into the vector to be printed  
-            std::vector<int> temp;
-            temp.reserve(128); //performance
-            for(int i=0; i<128; i++){
-                temp.push_back(ADCdata[i]);
-            }
-            frames.push_back(temp);
             */
-
+            
             //Send start of integration signal
             si = 1;
             clk = 1;
@@ -378,21 +376,24 @@
             }
             
             //Line Crossing Checks
-            if (maxCount >= 15 || space) {
+            if (space) {
                 currDir = prevDir;
             } else {
                 approxPos = (float)maxAccum/(float)maxCount;
 
-                if(loopCounterForModdingSoThatWeCanIncreaseTheRecordingTime%3==0){
-                    lineCenters[loopCtr] = approxPos;
-                    times[loopCtr] = printTimer.read_ms();
-                    loopCtr++;
+                if(dataCol){
+                    if(loopCounterForModdingSoThatWeCanIncreaseTheRecordingTime%3==0){
+                        lineCenters[loopCtr] = approxPos;
+                        times[loopCtr] = printTimer.read_ms();
+                        loopCtr++;
+                    }
                 }
+                
                 currDir = hardLeft + approxPos/((float) 127)*(hardRight-hardLeft);
                 
 
             }
-            
+
             //Change speed when turning at different angles
             /*if(approxPos > 0 && approxPos <= 45){
                     motor1.pulsewidth(motorPeriod*(pulsewidth/2));
@@ -434,21 +435,24 @@
 
         //clk = 0;
         integrationCounter++;
-        loopCounterForModdingSoThatWeCanIncreaseTheRecordingTime++;
+        if(dataCol){
+            loopCounterForModdingSoThatWeCanIncreaseTheRecordingTime++;
+        }
         //camData.
         
     }
-    
-    //print frame data
-    pc.printf("printing frame data\n\r");
-    //int frameSize = frames.size();
-    //pc.printf("%i",frameSize);
-    pc.printf("[");
-    for(int i=0; i<numData; i++){
-        if(lineCenters > 0){
-            pc.printf("%i %i,",lineCenters[i], times[i]);
+    if (dataCol){
+        //print frame data
+        pc.printf("printing frame data\n\r");
+        //int frameSize = frames.size();
+        //pc.printf("%i",frameSize);
+        pc.printf("[");
+        for(int i=0; i<numData; i++){
+            if(lineCenters > 0){
+                pc.printf("%i %i,",lineCenters[i], times[i]);
+            }
         }
+        pc.printf("]\n\r");
     }
-    pc.printf("]\n\r");
 }