Autotune not work

I have one question. Everything works, just don't know how to make autonue. When I press send the program to the PID controller and uploading it, nothing happens. In my opinion it's all okay, but don't want to work.
Can you help me?

#include <PID_v1.h>
#include <PID_AutoTune_v0.h>

byte ATuneModeRemember=2;
double input=80, output=50, setpoint=180;
double kp=2,ki=0.5,kd=2;

double kpmodel=1.5, taup=100, theta[50];
double outputStart=5;
double aTuneStep=50, aTuneNoise=1, aTuneStartValue=100;
unsigned int aTuneLookBack=20;

boolean tuning = false;
unsigned long modelTime, serialTime;

PID myPID(&input, &output, &setpoint,kp,ki,kd, DIRECT);
PID_ATune aTune(&input, &output);

//set to false to connect to the real world
boolean useSimulation = true;

void setup()
{
if(useSimulation)
{
for(byte i=0;i<50;i++)
{
theta*=outputStart;*

  • }*

  • modelTime = 0;*

  • }*

  • //Setup the pid*

  • myPID.SetMode(AUTOMATIC);*

  • if(tuning)*

  • {*

  • tuning=false;*

  • changeAutoTune();*

  • tuning=true;*

  • }*

  • serialTime = 0;*

  • Serial.begin(9600);*
    }
    void loop()
    {

  • unsigned long now = millis();*

  • if(!useSimulation)*

  • { //pull the input in from the real world*

  • input = analogRead(0);*

  • }*

  • if(tuning)*

  • {*

  • byte val = (aTune.Runtime());*

  • if (val!=0)*

  • {*

  • tuning = false;*

  • }*

  • if(!tuning)*

  • { //we're done, set the tuning parameters*

  • kp = aTune.GetKp();*

  • ki = aTune.GetKi();*

  • kd = aTune.GetKd();*

  • myPID.SetTunings(kp,ki,kd);*

  • AutoTuneHelper(false);*

  • }*

  • }*

  • else myPID.Compute();*

  • if(useSimulation)*

  • {*

  • theta[30]=output;*

  • if(now>=modelTime)*

  • {*

  • modelTime +=100;*

  • DoModel();*

  • }*

  • }*

  • else*

  • {*

  • analogWrite(0,output);*

  • }*

  • //send-receive with processing if it's time*

  • if(millis()>serialTime)*

  • {*

  • SerialReceive();*

  • SerialSend();*

  • serialTime+=500;*

  • }*
    }
    void changeAutoTune()
    {
    if(!tuning)

  • {*

  • //Set the output to the desired starting frequency.*

  • output=aTuneStartValue;*

  • aTune.SetNoiseBand(aTuneNoise);*

  • aTune.SetOutputStep(aTuneStep);*

  • aTune.SetLookbackSec((int)aTuneLookBack);*

  • AutoTuneHelper(true);*

  • tuning = true;*

  • }*

  • else*

  • { //cancel autotune*

  • aTune.Cancel();*

  • tuning = false;*

  • AutoTuneHelper(false);*

  • }*
    }
    void AutoTuneHelper(boolean start)
    {

  • if(start)*

  • ATuneModeRemember = myPID.GetMode();*

  • else*

  • myPID.SetMode(ATuneModeRemember);*
    }
    void SerialSend()
    {

  • Serial.print("setpoint: ");Serial.print(setpoint); Serial.print(" ");*

  • Serial.print("input: ");Serial.print(input); Serial.print(" ");*

  • Serial.print("output: ");Serial.print(output); Serial.print(" ");*

  • if(tuning){*

  • Serial.println("tuning mode");*

  • } else {*

  • Serial.print("kp: ");Serial.print(myPID.GetKp());Serial.print(" ");*

  • Serial.print("ki: ");Serial.print(myPID.GetKi());Serial.print(" ");*

  • Serial.print("kd: ");Serial.print(myPID.GetKd());Serial.println();*

  • }*
    }
    void SerialReceive()
    {

  • if(Serial.available())*

  • {*

  • char b = Serial.read();*

  • Serial.flush();*

  • if((b=='1' && !tuning) || (b!='1' && tuning))changeAutoTune();*

  • }*
    }
    void DoModel()
    {

  • //cycle the dead time*

  • for(byte i=0;i<49;i++)*

  • {*
    _ theta = theta[i+1];_
    * }*
    * //compute the input*
    _ input = (kpmodel / taup) (theta[0]-outputStart) + input(1-1/taup) + ((float)random(-10,10))/100;_
    }[/quote]

The code you posted does something. You didn't describe what.
It has some expectations about hardware. You didn't describe yours.
You want the code to do something. You didn't describe what.

Instead, you trotted out the lame "it doesn't work". Well, fix it.

Sorry,
This code is actuated Gimbal. Once your recording is Gimbal this program is not responding at all, I can only manually calibrate it, but the manual actuation has its flaws (the wires coming out of the gimbal can not be perfectly set). I wanted to check if PID Autotune works with this would be better, but I have a problem with it and do not know what I miss in the program, it does not work. I have microcontroller ATmega328P.

If you want autotuning you probably want to consider the effect of this line:

boolean tuning = false;