PID code failing

Hello, my PID code is not working currently and I have no idea why. I have commented out the Integral for the time being but it didn’t fix anything, the drivebase just doesn’t stable it goes forever.

bool pidswt=false;
float errorf=0;
int motoravg=0;
double kpf = 0.55;
double kIf = 0.005;
double kdf = 0.05;
float integral=0;
float spdp = 0;
float derivative=0;
float preverrorf=0;
void forwardPID(int dst){
  pidswt=true;
  lmotors.resetPosition();
  rmotors.resetPosition();
  wait(1,msec);
  while(pidswt){
    Controller1.Screen.clearScreen();
    Controller1.Screen.setCursor(5, 5);
    wait(1,msec);
    Controller1.Screen.print(errorf);
    motoravg=(lmotors.position(degrees)+rmotors.position(degrees))/2;
    errorf=dst-motoravg;
    integral=integral+errorf;
    if(integral>1000){
      integral=0;
    }
    //integral max value above.
    if(errorf<=0){
      integral=0;
    }
    derivative=errorf-preverrorf;
    preverrorf=errorf;
    spdp=((errorf*kpf)+(derivative*kdf))/3;
    //spdp=((errorf*kpf)+(integral*kIf)+(derivative*kdf))/2;
    br.spin(reverse, spdp, pct),
    fr.spin(reverse, spdp, pct),
    rmid.spin(forward, spdp, pct),
    bl.spin(reverse, spdp, pct),
    fl.spin(reverse, spdp, pct),
    lmid.spin(forward, spdp, pct);
    if(errorf<6 && errorf>-6){
      wait(5,msec);
      fullstop();
      pidswt=false;
    }
    wait(15,msec);
  }
}

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.