Controllo PID

E' il pid che serve per controllare in pwm la velocità dei motori e bilanciare il robottino
[motori lego nxt--arduino uno--imu mpu6050]

/////////DEFINIZIONE VARIABILI
 float x=0; //valore che arriva dalla imu

float mySetpoint = 81.9;  //valore imu dal robot tenuto in equilibrio con la mano
    
    double kp=10;                  // * (P)roportional Tuning Parameter
    double ki=5;                  // * (I)ntegral Tuning Parameter
    double kd=1;                  // * (D)erivative Tuning Parameter
   
double ITerm, lastInput;
unsigned long lastTime;
int SampleTime=100; //0.1 sec
lastTime = millis()-SampleTime;

int updatePid(float mySetpoint, float x){

   unsigned long now = millis();
   
   int timeChange = (now - lastTime);
   if(timeChange>=SampleTime)
   {
      /*Compute all the working error variables*/
      float error = mySetpoint - x;
      ITerm += ki*(error * (SampleTime/1000));
      float dInput = (x - lastInput);
 
      /*Compute PID Output*/
      int output = (kp * error) + ITerm + (kd * dInput);
      	  
      /*Remember some variables for next time*/
      lastInput = x;
      lastTime = now;
      
                if(output>=255){output=255;}
                if(output<=0)  {output=0;}
                
                return output;
   }}

lastTime = millis()-SampleTime;
questa riga mi da errore:

copia:286: error: expected constructor, destructor, or type conversion before '=' token

int lastTime = millis()-SampleTime; ho corretto così ma solo a volte non mi da errore!! cosa sto facendo?
questa parte viene da PID_v1.
dove sbaglio!?

(riguardo l'errore sui valori sputati fuori sarà colpa dell windup?)