Open Loop drive forward

Dependencies:   mbed Tach ContinuousServo

main.cpp

Committer:
m211482
Date:
2019-04-17
Revision:
2:f1ccaf498a0c
Parent:
1:da5831bec373
Child:
3:af4ffcb8459d

File content as of revision 2:f1ccaf498a0c:

#include "mbed.h"
#include "ContinuousServo.h"
#include "Tach.h"

//servos
ContinuousServo left(p23);
ContinuousServo right(p26);
//ecnoders
Tach tLeft(p17,64);
Tach tRight(p13,64);
float proportionl(float);
float proportionr(float);
float wL;
float wR;
float ref=1.45;
float err, errl;
float lspeed=0.49;
float rspeed=-0.49;
float newspeedl,newspeedr;
float Kpl=0.1;
float Kpr=-0.07;
int main()
{
    while(1) {
        wait(1);
        left.speed(lspeed);
        wL=tLeft.getSpeed();
        errl=ref-wL;
        newspeedl=proportionl(errl);
        left.speed(newspeedl);
        right.speed(rspeed);
        wR=tRight.getSpeed();
        err=ref-wR;
        newspeedr=proportionr(err);
        right.speed(newspeedr);
        printf("speed left=%f\n\r",newspeedl);
        printf("speed right=%f\n\r",newspeedr);
        wait(0.2);
    }
}
float proportionl(float errl)
{
    return newspeedl=Kpl*errl+lspeed;
}
float proportionr(float err)
{
    return newspeedr=Kpr*err+rspeed;
}
// left.speed(0.49);
//wL=tLeft.getSpeed();
//right.speed(-0.5); //the servo is inverted so much be negative
//wR=tRight.getSpeed();
//printf("Both moving, l=%f, r=%f\n\r",wL,wR);
//wait(0.5);
//left.stop();
//right.stop();

//}
//}