.

Dependencies:   Servo mbed

Revision:
12:46d0ff953a3f
Parent:
11:d07a4a683289
Child:
14:bda4a189cbe8
--- a/main.cpp	Fri Mar 06 09:16:02 2015 +0000
+++ b/main.cpp	Fri Mar 20 01:29:47 2015 +0000
@@ -4,6 +4,9 @@
 PwmOut servo(PTA5);
 PwmOut motor1(PTA4);
 PwmOut motor2(PTA12);
+DigitalOut break1(PTC12);
+DigitalOut break2(PTC13);
+
 Serial pc(USBTX, USBRX); // tx, rx
 
 // encoder setup and variables
@@ -32,6 +35,7 @@
 bool servoLeft = true;
 
 //Observed average speeds for each duty cycle
+const float TUNING_CONSTANT_10 = 1.10;
 const float TUNING_CONSTANT_20 = 3.00;
 const float TUNING_CONSTANT_30 = 4.30;
 const float TUNING_CONSTANT_50 = 6.880;
@@ -91,14 +95,14 @@
     if (avg_speed == stall_check) {
         avg_speed = 0;
         tuning_val += TUNE_AMT;
-    } else if((avg_speed -  tuning_const) > TUNE_THRESH){
+    } else if((avg_speed - tuning_const) > TUNE_THRESH){
         tuning_val -= TUNE_AMT;
         stall_check = avg_speed;
     } else if (avg_speed - tuning_const < -1*TUNE_THRESH){
         tuning_val += TUNE_AMT;
         stall_check = avg_speed;
     } else {
-        tuning_val = 1;
+        //tuning_val = 1;
         stall_check = avg_speed;
     }
     motor1.pulsewidth(.0025 * duty_cyc * tuning_val);
@@ -155,7 +159,8 @@
     t.start();
     while(1){
         
-        char choice = '2';//pc.getc();
+        wait(3);
+        char choice = '1'; //pc.getc();
         pc.putc(choice);      
         
         switch(choice){
@@ -166,16 +171,24 @@
                 
                 break;
             case '1':
-                motor1.pulsewidth(.0025);
-                motor2.pulsewidth(.0025);
+                motor1.pulsewidth(.0025*.1);
+                motor2.pulsewidth(.0025*.1);
+                break1 = 0;
+                break2 = 0;
                 pc.printf("100% \n\r");
                 wait(.5);
                 pc.printf("speed: %f",get_avg_speed(num_samples_small, delay_small));
 
-                break;
+                while(1){
+                    velocity_control(0.1f, TUNING_CONSTANT_10);
+                }
+
+                //break;
             case '2':
                 motor1.pulsewidth(.0025*.2);
                 motor2.pulsewidth(.0025*.2);
+                break1 = 0;
+                break2 = 0;
                 pc.printf("\n\r20% \n\r");
                 wait(.5);       
                 pc.printf("speed: %f\n\rtuning val: %f\n\r", get_avg_speed(num_samples_small, delay_small));
@@ -200,6 +213,8 @@
             case '3':
                 motor1.pulsewidth(.0025*.3);
                 motor2.pulsewidth(.0025*.3);
+                break1 = 0;
+                break2 = 0;
                 pc.printf("\n\r30% \n\r");
                 wait(.5);
                 pc.printf("speed: %f",get_avg_speed(num_samples_small, delay_small));
@@ -212,6 +227,8 @@
             case '5':
                 motor1.pulsewidth(.0025*.5);
                 motor2.pulsewidth(.0025*.5);
+                break1 = 0;
+                break2 = 0;
                 pc.printf("\n\r50% \n\r");
                 wait(.5);
                 pc.printf("speed: %f",get_avg_speed(num_samples_small, delay_small));
@@ -226,8 +243,16 @@
                 choice = pc.getc();
                 pc.putc(choice);
                 
+                break1 = 0;
+                break2 = 0;
                 switch(choice){
                     
+                    case '1':
+                        motor1.pulsewidth(.0025*0.1f);
+                        motor2.pulsewidth(.0025*0.1f);
+                        pc.printf("\n\rLongterm average speed at 10 Duty Cycle: %f\n\r", get_avg_speed(num_samples_large, delay_large));
+                        break;
+                    
                     case '2':
                         motor1.pulsewidth(.0025*0.2f);
                         motor2.pulsewidth(.0025*0.2f);
@@ -254,6 +279,8 @@
             default:
                 motor1.pulsewidth(.0025*0);
                 motor2.pulsewidth(.0025*0);
+                break1 = 0;
+                break2 = 0;
                 pc.printf("default\n\r");
                 break;
         }