Bonsoir à tous
J'ai une fonction:
float CalculLReserv(int ValRes, int Min, int Max, int L)
{
return (L + ((float)ValRes - Min) / ((Max - Min)));
}
cette fonction est appelé comme ça:
else if (ReservoirValue < 872 && ReservoirValue >= 776) { //3
PrintTFT(135, 142, String(CalculLReserv(ReservoirValue, 776, 873 , 3)), 2);//Print L dans le reservoir
PrintTFT(225, 142, String(CalculLReserv(ReservoirValue, 776, 873 , 3) * 25), 2);//Print Km
}
cette fonction me calcule les litres d’essence que j'ai dans mon réservoir.
L c'est un int entre 0 et 14.
ValRes est la valeur que lit l'arduino sur une entrée analogique de la jauge à essence.
Min et Max c'est le valeur que l'arduino lit entre un litre et l'autre .
ex:
0 litres j'ai une valeur de 980
1 litre 950
2 litres 900
3 litres 873 etc. etc.
ce n'est pas linéaire car un réservoir n'a pas une forme comme un parallélépipède.
donc
((float)ValRes - Min) / ((Max - Min))
me calcule approximativement le décimaux de litre.
ex: 1L min = 899 max = 950 ValRes = 920
La fonction "devrait" me retourner 1.41 L
Mes doutes vont sur la position de (float).
Vous pouvez me dire: " Essaye!!" mais j'aimerai si c'est possible un minimum de théorie sur ces cast .
J'ai lit ça et ça mais c'est très maigre.
aussi la différence entre
(float)nr
et float(nr)
Merci.