31-03-2020, 12:13
Input = srednia; // czy mogę tak zrobić?
double gap = abs(Setpoint-Input); //distance away from setpoint
if(gap<10)
{ //we're close to setpoint, use conservative tuning parameters
myPID.SetTunings(consKp, consKi, consKd);
}
else
{
//we're far from setpoint, use aggressive tuning parameters
myPID.SetTunings(aggKp, aggKi, aggKd);
}
myPID.Compute();
// analogWrite(3,Output); w przykładzie funckcja steruje wyjściem analogowym
serwo.writeMicroseconds(Output); // Ja potrzebuję żeby output przyjmowało wartości od 544 (pozycja 0 serwa) do ok 1000 mikrosekund ( dalej jeszcze serwa nie ruszałem)
// Czy najpierw zamienić output na mikrosekundy?
double gap = abs(Setpoint-Input); //distance away from setpoint
if(gap<10)
{ //we're close to setpoint, use conservative tuning parameters
myPID.SetTunings(consKp, consKi, consKd);
}
else
{
//we're far from setpoint, use aggressive tuning parameters
myPID.SetTunings(aggKp, aggKi, aggKd);
}
myPID.Compute();
// analogWrite(3,Output); w przykładzie funckcja steruje wyjściem analogowym
serwo.writeMicroseconds(Output); // Ja potrzebuję żeby output przyjmowało wartości od 544 (pozycja 0 serwa) do ok 1000 mikrosekund ( dalej jeszcze serwa nie ruszałem)
// Czy najpierw zamienić output na mikrosekundy?