Visualizza messaggio singolo
Vecchio 03 maggio 20, 13:52   #44 (permalink)  Top
nicolap
User
 
L'avatar di nicolap
 
Data registr.: 02-10-2019
Residenza: Orvieto
Messaggi: 388
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...
nicolap non è collegato   Rispondi citando