ho realizzato un banalissimo sketch che restituisce i valori nei due casi:
Codice: Seleziona tutto
boolean stay = true;
unsigned int A = 0;
void setup() {
Serial.begin(9600);
}
void loop() {
while (stay) {
stay = false;
A = 65534 + 2;
Serial.print("Test Overflow A= A+2 " ); Serial.println(A);
A = 65534 + (float)2;
Serial.print("Test Overflow A= A+(float)2 " ); Serial.println(A);
}
}
@ sbinf74
anch'io non reputo particolarmente utile quel menu, infatti ho anche un conta impulsi calettato sullo stesso asse dell'encoder che è molto più preciso.
Però ho analizzato i codice per capire come venissero calcolati gli RPM ed ho capito che c'è un errore introdotto dall'utilizzo dell'interrupt di conteggio dei passi encoder che determina un valore di millis() inferiore a quanto dovrebbe essere e quindi viene calcolato un valore degli RPM più elevato (nel mio caso circa un 20%).
Poiché la stessa logica è utilizzata nella routine degli avanzamenti il risultato è che il valore dei cent/giro non è corretto.
Sono consapevole che non si tratta di un grosso problema perché in fase di lavorazione si aggiusta tutto ad occhio.
Comunque ho fatto qualche modifica al codice per inserire dal menu "Impostazioni" un coefficiente correttivo da applicare al calcolo...... lo so, sono un po' pignolo
