Ciao,
direi che fai passi avanti...l'utilizzo di constrain() è sicuramente utile ma per evitare di perdere la linearità della risposta prova a inserire i valori di "minffw" e "maxffw" anche sulla riga dove calcoli "correction" come nell'esempio che quoto
Citazione:
gaspulse = constrain (gaspulse, minffw, maxffw);
correction = map(gaspulse, minffw, maxffw, 0,max_correction);
|
in questo modo calcoli "correction" solo in base ai valori di gaspulse che ti interessano.