Nombres a virgules moniteur série

Salut,
Alors, j'ai fais un programme qui lit un potentiomètre, et qui convertit les valeur de 0 à 70 (voir code)

void setup () {
  Serial.begin (9600);
}

void loop() {
  int sensorValue = analogRead (A0);
  sensorValue = map (sensorValue, 0,1023, 0,70);
  Serial.println(sensorValue, );
  delay (200);
}

Mais voilà, le moniteur série n'affiche que des nombres entier, et je voudrai avoir plus de précision (pouvoir avoir 12,5 ou 43,7; un chiffre après la virgule suffit :D)
J'ai essayer de mettre ça mais ça ne marche pas.

sensorValue = map (sensorValue, 0,1023, 0,0,70,0);

Si vous savez comment faire je suis preneur

map ne renvoie que des long.
Tu dois faire le produit en croix toi même...

Bonjour,

Le plus simple c'est de faire le calcul en flottant

void loop() {
  int sensorValue = analogRead (A0);
  float fSensorValue=sensorValue*70.0/1023.0;
  Serial.println(fSensorValue);
  delay (200);
}

Bonjour pepe

Je suis d'accord avec toi sur le plan théorique.

En pratique les quelques µs pour le calcul en entiers et les quelques dizaines de µs pour le calcul flottant sont tout à fait négligeables devant les quelques ms de l'instruction serial.println() (et devant le delai de 200 ms)

Ou tu as sans doute raison c'est que la taille du programme en mémoire doit être nettement plus long.

Alors merci pour toutes ces reponses, j'y ai réfléchi dans mon coin et j'ai trouvé une solution qui fonctionne, je la met, si jamais ça peut aider quelqu'un :

D'abord, on déclare sensorValue en float,
puis on fais en sorte que les nombres gagnent un 0 (donc de 0 à 700) et on divise le résultat par 10.

 float sensorValue = analogRead (A0);
  sensorValue = map (sensorValue, 0,1023, 0,700);
  sensorValue = sensorValue / 10;

On peut choisir le nombre de chiffre après la virgule avec la fonction

Serial.print (sensorValue, 2)

Et ça me permet d'obtenir des nombres après la virgule :slight_smile:
Encore merci pour vos réponse,
Bonne Journée