Ciao, ho potuto dare un'occhiata piu approfondita allo sketch e ho notato queste cose:
1)
il ciclo if else scritto come riportato non esegue nessuna operazione, andrebbe invece scritto così:
if (Gaspulse > Slowlimit)
{
operazione da eseguire
}
else
{
operazione da eseguire
}
il ciclo if else comunque non è necessario perché con il comando "constrain" ,il valore di "Gaspulse", rimane sempre entro i limiti da te imposti...e qui ho notato un altro problema, che è probabilmente la causa del cambiamento di valori indesiderato
2)
l'operazione "constrain" per essere utilizzata come vuoi tu dovrebbe essere scritto come segue
Gaspulse = constrain (Gaspulse, Neutral, Maxspeed);
ho sostituito la variabile "Slowlimit" con "Gaspulse" perchè è quest'ultimo valore che deve essere contenuto entro certi limiti...ho scritto variabile riferendomi a "Slowlimit" perché effettivamente lo è...con #define assegni un valore costante a quella variabile ogni volta che compili lo sketch o ogni volta che resetti/avvii l'arduino.
void loop(){
Rxpulse = pulseIn(8, HIGH);
Gaspulse = pulseIn(7, HIGH);
if (Gaspulse > Slowlimit);
else
Gaspulse = constrain (
Slowlimit, Neutral, Maxspeed);
Gain = map(Gaspulse, Neutral, Maxspeed, 0, Max_gain);
NewPos = map(Rxpulse, Antsx, Antdx, (Postsx + Gain), (Postdx - Gain));
if (abs(NewPos - OldPos)> Tolerance) {
OldPos = NewPos;
myservo.write(NewPos + Center);
}
}
Ora devo andare a pranzo...