Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: main.cpp
- Revision:
- 25:50d3f80cb763
- Parent:
- 24:b05cb3dd943e
- Child:
- 26:072ab2309eec
--- a/main.cpp Wed Dec 11 12:44:31 2019 +0000 +++ b/main.cpp Wed Dec 11 16:32:28 2019 +0000 @@ -50,6 +50,7 @@ float TAA, TBB = 0.0f; float pulse = 0.0f; float trav = 0.0f; +float rpsA, rpsB = 0.0f; void timeA() { static int n=0; //Number of pulse sets @@ -169,6 +170,8 @@ //Update duty cycle to correct in the first direction PWMA.write(dutyA); PWMB.write(dutyB); + rpsA = dutyA; + rpsB = dutyB; } void cornerRPS(){ float deltaA = 1.0f-sumA; //Error @@ -176,17 +179,19 @@ dutyA = dutyA + deltaA*0.001f; //Increase duty in proportion to the error dutyB = dutyB + deltaB*0.001f; //Increase duty in proportion to the error //Clamp the max and min values of duty and 0.0 and 1.0 respectively - dutyA = (dutyA>1.5f) ? 1.5f : dutyA; + dutyA = (dutyA>1.0f) ? 1.0f : dutyA; dutyA = (dutyA<0.05f) ? 0.05f : dutyA; - dutyB = (dutyB>0.5f) ? 0.5f : dutyB; + dutyB = (dutyB>1.0f) ? 1.0f : dutyB; dutyB = (dutyB<0.05f) ? 0.05f : dutyB; //Update duty cycle to correct in the first direction - PWMA.write(dutyA); - PWMB.write(dutyB); + PWMA.write(dutyA+0.2); + PWMB.write(dutyB-0.35); } void reset(){ trav = 0; pulse = 0; + dutyA = rpsA; + dutyB = rpsB; } int main() { @@ -250,7 +255,7 @@ timeB(); oneRPS(); terminal.printf("wheelA: %6.3f \t wheelB: %6.3f \t distance: %6.2f \n\r", sumA, sumB, trav); - while(trav <= 1250) + while(trav <= 1400) { timeA(); timeB(); @@ -258,7 +263,7 @@ terminal.printf("wheelA: %6.3f \t wheelB: %6.3f \t distance: %6.2f \n\r", sumA, sumB, trav); } reset(); - while(trav <= 330) + while(trav <= 640) { timeA(); timeB(); @@ -266,7 +271,7 @@ terminal.printf("wheelA: %6.3f \t wheelB: %6.3f \t distance: %6.2f \n\r", sumA, sumB, trav); } reset(); - while(trav <= 1457) + while(trav <= 1550) { timeB(); timeA(); @@ -274,15 +279,15 @@ terminal.printf("wheelA: %6.3f \t wheelB: %6.3f \t distance: %6.2f \n\r", sumA, sumB, trav); } reset(); - while(trav <= 278.5) + while(trav <= 455) { timeA(); timeB(); cornerRPS(); terminal.printf("wheelA: %6.3f \t wheelB: %6.3f \t distance: %6.2f \n\r", sumA, sumB, trav); } - reset(); - while(trav <= 750) + reset(); + while(trav <= 800) { timeB(); timeA(); @@ -290,7 +295,7 @@ terminal.printf("wheelA: %6.3f \t wheelB: %6.3f \t distance: %6.2f \n\r", sumA, sumB, trav); } reset(); - while(trav <= 200) + while(trav <= 330) { timeA(); timeB();