E=MC
/
e=mc
.
Diff: main.cpp
- Revision:
- 12:46d0ff953a3f
- Parent:
- 11:d07a4a683289
- Child:
- 14:bda4a189cbe8
diff -r d07a4a683289 -r 46d0ff953a3f main.cpp --- 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; }