Sooner Competitive Robotics / Mbed 2 deprecated IEEE_14_Freescale

Dependencies:   mbed

Fork of IEEE_14_Freescale by IEEE 2014 Mbed

Revision:
30:4158120cf801
Parent:
29:1132155bc7da
Child:
31:4ef53fbd6759
--- a/main.cpp	Fri Mar 21 03:16:15 2014 +0000
+++ b/main.cpp	Fri Mar 21 04:44:11 2014 +0000
@@ -52,7 +52,7 @@
     */
     Timer dataTimer;
     int testdata[]={'H','e','l','l','o'};
-    int responseData[17];
+    //int responseData[17];
     int response;
     int gotAck=0;
     // Loop
@@ -111,7 +111,7 @@
                 break;
             case 'E': //drive forward five times as much
                 //bot.driveForward(targetAngle,5000);
-                bot.absDriveForward(0,5000);
+                bot.absDriveForward(0,29*16);
                 DBGPRINT("={%f,\t%f,\t%f}\n\r",bot.x,bot.y,bot.rot*180.0/3.14159);
                 break;
             case 'X': // small reverse
@@ -123,7 +123,7 @@
                 break;
             case 'C': // big reverse
                 //bot.driveForward(targetAngle,-5000);
-                bot.absDriveForward(0,-5000);
+                bot.absDriveForward(0,-29*16);
                 DBGPRINT("={%f,\t%f,\t%f}\n\r",bot.x,bot.y,bot.rot*180.0/3.14159);
                 break;
             case 'p': // poll the gyro
@@ -139,7 +139,11 @@
                 //bot.gyro.stop();
                 dataTimer.start();
                 dataTimer.reset();
-                while(!(gotAck=bot.BTLink.getAck(response)) && dataTimer.read_ms()<500);
+                while(1){
+                    gotAck=bot.BTLink.getAck(response);
+                    if(gotAck || dataTimer.read_ms()>=500)
+                        break;
+                }
                 dataTimer.stop();
                 //bot.gyro.start();
                 //bot.pfac*=2;
@@ -169,11 +173,21 @@
             case 'i':
                 //put distance ping here
                 bot.pingLeft.trigger();
-                wait(0.1);
-                float pingresult = bot.pingLeft.inches();
-                DBGPRINT("Distance = %f\r\n",pingresult);
+                dataTimer.start();
+                dataTimer.reset();
+                while(bot.pingLeft.measuring && dataTimer.read_ms()<300);
+                dataTimer.stop();
+                DBGPRINT("Distance = %f\r\n",bot.pingLeft.inches());
                 break;
             case 'k':
+                dataTimer.start();
+                for(int i=0;i<100;i++){
+                    bot.pingLeft.trigger();
+                    dataTimer.reset();
+                    while(bot.pingLeft.measuring && dataTimer.read_ms()<300);
+                    DBGPRINT("Distance %d = %f\r\n",i,bot.pingLeft.inches());
+                }
+                dataTimer.stop();
                 //bot.angfac/=2;
                 //DBGPRINT("angfac = %f\r\n",bot.angfac);
                 break;