Auteur Sujet: Boite de mesure de vitesse Arduino  (Lu 25098 fois)

Escargot

  • Newbie
  • *
  • Messages: 14
    • Voir le profil
    • Le Train d'Enfer
Boite de mesure de vitesse Arduino
« le: octobre 12, 2020, 01:49:47 pm »
Bonjour,

Tout nouvel inscrit, je viens ici pour trouver de l'aide pour un nouveau projet.

Je réalise un nouvel outil de mesure (nous en avons déjà plusieurs) pour le paramétrage des CV 2, 5, 6, 3 et 4. Les précédents sont utilisés avec la motrice roulant sur un réseau, avec ce nouveau projet les mesures se font sur un banc test. La grande roue va être indexée avec 20 aimants, un capteur ILs, un Arduino et un écran pour l'affichage de la vitesse et de la distance. Il me faut donc un programme qui calcule la vitesse au 1/87 en faisant une moyenne des impulsions de l'ILs et qui affiche le résultat sur un écran de 4 lignes pour 20 caractères.


J'ai acheté :
Un Itsy Bitsy 32u4 5V Référence Adafruit : 3677 (pour remplacer un Arduino Nano indisponible)
un capteur magnétique
Un afficheur LCD 4 lignes 20 caractères bleu I2C
20 petits aimants qui seront collés autour de la grande roue et qui activeront l'ILs

L'un de vous aurait-il la possibilité de me faire le programme :)
« Modifié: novembre 24, 2020, 10:32:11 pm par Escargot »
Président du Train d'Enfer de Franconville
Président d'Union Rail 95

Escargot

  • Newbie
  • *
  • Messages: 14
    • Voir le profil
    • Le Train d'Enfer
Re : Boite de mesure de vitesse Arduino
« Réponse #1 le: octobre 12, 2020, 02:04:31 pm »
La suite...

Sur cette base, pensez-vous qu'il soit possible de régler les Cv 3 et 4 ?

Il faudrait que l'on puisse mesurer la distance parcourue à partir de la mise en route de la motrice jusqu'à stabilisation de la vitesse pour le CV 3
et
Que l'on mesure la distance parcoure à partir du moment où la vitesse baisse et jusqu'à l'arrêt pour le CV 4
Président du Train d'Enfer de Franconville
Président d'Union Rail 95

Tony04

  • Hero Member
  • *****
  • Messages: 569
    • Voir le profil
Re : Boite de mesure de vitesse Arduino
« Réponse #2 le: octobre 12, 2020, 02:55:38 pm »
Bonjour "Escargot",

avez-vous lu cet article ? https://www.locoduino.org/spip.php?article147

Il ne répond certainement pas à votre attente d'un programme tout fait mais peut peut-être vous faire avancer un peu.

Cordialement
Antoine

Escargot

  • Newbie
  • *
  • Messages: 14
    • Voir le profil
    • Le Train d'Enfer
Re : Boite de mesure de vitesse Arduino
« Réponse #3 le: octobre 12, 2020, 03:08:23 pm »
Bonjour Tony04,

En fait, nous avons déjà un compteur de vitesse qui reprend cette idée, mais divisé en deux éléments
Un wagon mesureur avec un aimant sur essieux, un ILs, un Arduinon Nano qui calcule, un transmetteur WiFi => Un récepteur WiFi et un écran qui affiche les valeurs transmises par le wagon.

Nous avons donc deux programmes, l'un pour le wagon et l'autre pour l'afficheur, ils sont ICI

Dans ce nouveau projet, c'est un peu la même chose, sans transmission et surtout, en souhaitant ajouter de quoi évaluer les CV 3 et 4, ce qui est inhabituel ;)
Président du Train d'Enfer de Franconville
Président d'Union Rail 95

Escargot

  • Newbie
  • *
  • Messages: 14
    • Voir le profil
    • Le Train d'Enfer
Re : Boite de mesure de vitesse Arduino
« Réponse #4 le: octobre 12, 2020, 03:17:10 pm »
Le wagon :

#include <nRF24L01.h>
#include <printf.h>
#include <RF24.h>
#include <RF24_config.h>

#include <avr/wdt.h>
   
/*
* Arduino Wireless Communication Tutorial
*     Example 1 - Transmitter Code
*               
* by Dejan Nedelkovski, www.HowToMechatronics.com
*
* Library: TMRh20/RF24, https://github.com/tmrh20/RF24/
*/

//--------------------------------------------------------------------------------------------------
// v0   | 1st version with send of default value in increment of 1000 to check "portée"
// v2   | 2nd version + bugs correction
// v3   | Add TX power selection and Baud Rate
//      | Cannaux WiFi utilisable en France: canal 1 à 13 (F=2.412 à 2.472GHz, par pas de 5MHz)
//--------------------------------------------------------------------------------------------------


#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
RF24 radio(7, 8); // CE, CSN
const byte address[6] = "00001";

// PA
#define SENSOR_IN 2   // capteur roue
#define RADIO_TX  4   // LED Radio Tx

#define CFG_PW0   14
#define CFG_PW1   15
#define CFG_BR    16
#define CFG_CH    17


int timeCnt, time0, timet;
int speed;
int speedTab[8];
long speedAvg;
unsigned char tabPt;

float diam = 11.6;   // diametre roue (mm): mesurée pa LJ 11.6mm
float Pi = 3.1416;
float scale = 87;
//float K = (diam * Pi * scale * 3600 * 1000)/(1000 * 1000);   // to convert speed in mm/s (HO) to km/h reel
float K = (diam * Pi * scale * 3.6);   // to convert speed in mm/s (HO) to km/h reel
float fspeed;

int NbPulse;
unsigned char sensorLevel, newSensorLevel;


void setup() {

  //wdt_disable();
  pinMode (CFG_PW0,INPUT_PULLUP);   // Config
  pinMode (CFG_PW1,INPUT_PULLUP);   // Config
  pinMode (CFG_BR,INPUT_PULLUP);    // Config
  pinMode (CFG_CH,INPUT_PULLUP);    // Config

  char TxPower = 0;
  if(digitalRead(CFG_PW0) == 0)  TxPower += 1;
  if(digitalRead(CFG_PW1) == 0)  TxPower += 2;
 
 
  radio.begin();                      // Begin operation of the chip. Call this in setup(), before calling any other methods.

  radio.openWritingPipe(address);     // Open a pipe for writing via byte array
   
  //radio.setPALevel(RF24_PA_MAX);      // Set Power Amplifier (PA) level to one of four levels: RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH and RF24_PA_MAX
  radio.setPALevel(TxPower);      // Set Power Amplifier (PA) level to one of four levels: RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH and RF24_PA_MAX
 
  if(digitalRead(CFG_BR) == 0) radio.setDataRate(RF24_250KBPS);      // (by default: 1MBds) Fast enough.. Better range
  if(digitalRead(CFG_CH) == 0) radio.setChannel(108);              // (by default: 2.476GHz), F = 2508MHz, = channel Above most Wifi Channels
 
  radio.stopListening();

  pinMode (SENSOR_IN,INPUT_PULLUP);   // Capteur roue
  sensorLevel = digitalRead(SENSOR_IN);
 
  pinMode (RADIO_TX,OUTPUT);        // Measure Tx Time
  digitalWrite(RADIO_TX, 0);
 
  time0 = millis();
  speed = 0;
  for(tabPt = 0; tabPt < 8; tabPt++)
    {
      speedTab[tabPt] = 0;
    }
  tabPt = 0;

  NbPulse = 0;

  //wdt_reset();
  //wdt_enable(WDTO_8S);
 
}

void loop() {
 
  newSensorLevel = digitalRead(SENSOR_IN);
  timet = millis();
  timeCnt = timet - time0;
 
  if((sensorLevel == 0) && (newSensorLevel == 1))
      {
      sensorLevel = 1;

      if(NbPulse == 0)
      {
        time0 = timet;
        timeCnt = 0;
      }
      NbPulse++;

      if(timeCnt > 1000)
          {
          NbPulse--;                            // v1.1
          fspeed = (K * NbPulse) / timeCnt;
          speed = (int)fspeed;
         
          // averaging:

          speedTab[tabPt++] = speed;
          if(tabPt > 7) tabPt = 0;
   
          speedAvg = 0;
          for(unsigned char idx = 0; idx < 8; idx++)
            {
              speedAvg += speedTab[idx];
            }
   
          speedAvg = ((speedAvg << 16) & 0xFFFF0000) + speed;   // divide by 8 equal >> 3

          digitalWrite(RADIO_TX, 1);
          radio.write(&speedAvg, sizeof(speedAvg));           // Write for single NOACK writes. Optionally disables acknowledgements/autoretries for a single write.
          digitalWrite(RADIO_TX, 0);

          speed = 0;
          NbPulse = 0;
          }
      }
  else
      {
      sensorLevel = newSensorLevel;

      if(timeCnt > 2000)
          {
           // averaging:
          speedTab[tabPt++] = 0;
          if(tabPt > 7) tabPt = 0;
   
          speedAvg = 0;
          for(unsigned char idx = 0; idx < 8; idx++)
            {
              speedAvg += speedTab[idx];
            }
   
          speedAvg = ((speedAvg << 16) & 0xFFFF0000) + speed;   // divide by 8 equal >> 3

          digitalWrite(RADIO_TX, 1);
          radio.write(&speedAvg, sizeof(speedAvg));           // Write for single NOACK writes. Optionally disables acknowledgements/autoretries for a single write.
          digitalWrite(RADIO_TX, 0);
         
          time0 = timet;

          if((speed > 0) && (speed < 1000));     // if calculated speed: do nothing
          else                                   // no speed
            {
              speed += 1000;
              if (speed >= 10000) speed = 0;
            }
         }
      }

   delay(5);        // PA v1.1
}

L'afficheur :

/*
* Arduino Wireless Communication Tutorial
*       Example 1 - Receiver Code
*               
* by Dejan Nedelkovski, www.HowToMechatronics.com
*
* Library: TMRh20/RF24, https://github.com/tmrh20/RF24/
*/
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

RF24 radio(7, 8); // CE, CSN
const byte address[6] = "00001";


#define CFG_PW0   14
#define CFG_PW1   15
#define CFG_BR    16
#define CFG_CH    17


int speed;
long speedAvg;
long SpeedAvg_Table[4];
float speedMoy;




#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,16,4);  // set the LCD address to 0x27 for a 16 chars and 2 line display






void setup() {

  pinMode (CFG_PW0,INPUT_PULLUP);   // Config
  pinMode (CFG_PW1,INPUT_PULLUP);   // Config
  pinMode (CFG_BR,INPUT_PULLUP);    // Config
  pinMode (CFG_CH,INPUT_PULLUP);    // Config


 
  Serial.begin(9600);
  radio.begin();
 
  radio.openReadingPipe(0, address);

  //char TxPower = 0;
  //if(digitalRead(CFG_PW0) == 0)  TxPower += 1;
  //if(digitalRead(CFG_PW1) == 0)  TxPower += 2;
  radio.setPALevel(RF24_PA_MIN);

  if(digitalRead(CFG_BR) == 0) radio.setDataRate(RF24_250KBPS);      // (by default: 1MBds) Fast enough.. Better range
  if(digitalRead(CFG_CH) == 0) radio.setChannel(108);              // (by default: 2.476GHz), F = 2508MHz, = channel Above most Wifi Channels

 
  radio.startListening();



  lcd.init();                      // initialize the lcd
  lcd.backlight();
 
 
  //lcd.print("Hello, world!");
 

  lcd.print("  RX_RF24 vers.02a  ");
  lcd.setCursor(0,1);
  lcd.print("   03 / 09 / 2018   ");

  char TxPower = 0;
  if(digitalRead(CFG_PW0) == 0)  TxPower += 1;
  if(digitalRead(CFG_PW1) == 0)  TxPower += 2;

  lcd.setCursor(0,2);
  lcd.print("Tx Pw:");
  lcd.print(TxPower, DEC);
  if(TxPower == 0)      lcd.print("   MIN PA ");
  else if(TxPower == 1) lcd.print("   LOW PA  ");
  else if(TxPower == 2) lcd.print("   HIGH PA ");
  else if(TxPower == 3) lcd.print("   MAX PA  ");
  else                  lcd.print("   ERROR   ");
   
  lcd.setCursor(0,3);
  if(digitalRead(CFG_BR) == 0)  lcd.print("BR=250kBp ");
  else                          lcd.print("BR=1MBp   ");
  if(digitalRead(CFG_CH) == 0)  lcd.print("F=2.508GHz ");
  else                          lcd.print("F=2.476GHz ");

  delay(2000);

  speed = 0;
 
}


void loop() {
  if (radio.available())
    {

    radio.read(&speedAvg, sizeof(speedAvg));
    Serial.print(speedAvg & 0x0000FFFF, DEC);
    Serial.print(" Avg: ");
    speedMoy = speedAvg >> 16;
    speedMoy = speedMoy / 8;
    Serial.println(speedMoy);


    for (int i = 0; i < 3; i++)
        {
            SpeedAvg_Table[i] = SpeedAvg_Table[i+1];
        }
    SpeedAvg_Table[3] = speedAvg;


    lcd.clear();
    lcd.home();

    for (int i = 0; i < 4; i++)
        {
        lcd.setCursor(0,i);
        lcd.print(SpeedAvg_Table[i] & 0x0000FFFF, DEC);
       
        lcd.setCursor(6,i);
        lcd.print(" Avg: ");
       
        speedMoy = SpeedAvg_Table[i] >> 16;
        speedMoy = speedMoy / 8;
        lcd.print(speedMoy);
       
        }
    }
}

Président du Train d'Enfer de Franconville
Président d'Union Rail 95

chris_bzg

  • Sr. Member
  • ****
  • Messages: 319
    • Voir le profil
Re : Boite de mesure de vitesse Arduino
« Réponse #5 le: octobre 12, 2020, 03:17:29 pm »
L'article conseillé par Tony04 n'est à mon avis pas le bon, simplement parce qu'il propose une mesure de la vitesse en un seul endroit du réseau.
Ici, il s'agit de faire la mesure sur un banc d'essai en comptant les impulsions d'un ILS.

Tout d'abord, à cause de ses rebonds, l'ILS n'est pas le meilleur capteur à mon avis. Il vaudrait mieux le remplacer par un capteur à effet Hall, dont le déclenchement est bien plus franc (voir l'article https://www.locoduino.org/spip.php?article273).

Ensuite, comme il s'agit de compter des impulsions générées par la rotation d'une roue, le mieux serait de s'inspirer de cet article https://www.locoduino.org/spip.php?article259.

Ne pratiquant pas le DCC, je ne peux hélas rien dire concernant les Cv 3 et 4, mais beaucoup de gens connaissent bien le sujet.  ;)

Thierry

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 810
    • Voir le profil
Re : Boite de mesure de vitesse Arduino
« Réponse #6 le: octobre 12, 2020, 03:56:47 pm »
L'un de vous aurait-il la possibilité de me faire le programme :)

Le projet parait sympathique en tout cas. Je souhaiterais ajouter cependant que la politique de ce site, et donc du forum qui va avec, n'est pas de faire le travail à la place des membres, mais bien de donner les clés pour qu'il puisse lui même faire ce travail. Le but du site n'est pas de fournir des programmes clef en main, mais d'aider à comprendre et manipuler les outils pour y arriver, et les explications qui vont avec.

Que les choses soient claires, on ne refuse pas d'aider, bien au contraire, mais fournir un programme tout fait ne correspond pas à la philosophie du site.

En tout cas, on est tous prêt à aider si besoin pour la mise au point !

Tony04

  • Hero Member
  • *****
  • Messages: 569
    • Voir le profil
Re : Boite de mesure de vitesse Arduino
« Réponse #7 le: octobre 12, 2020, 05:08:22 pm »
En effet, l'article proposé par chris_bzg est plus proche de votre projet.
Pour les tests des CV3 et 4 il suffit de tester la stabilisation de la vitesse et enregistrer les positions à ce moment, puis faire les calculs nécessaires.

Escargot

  • Newbie
  • *
  • Messages: 14
    • Voir le profil
    • Le Train d'Enfer
Re : Re : Boite de mesure de vitesse Arduino
« Réponse #8 le: octobre 12, 2020, 05:27:18 pm »
L'un de vous aurait-il la possibilité de me faire le programme :)

Le projet parait sympathique en tout cas. Je souhaiterais ajouter cependant que la politique de ce site, et donc du forum qui va avec, n'est pas de faire le travail à la place des membres, mais bien de donner les clés pour qu'il puisse lui même faire ce travail. Le but du site n'est pas de fournir des programmes clef en main, mais d'aider à comprendre et manipuler les outils pour y arriver, et les explications qui vont avec.

Que les choses soient claires, on ne refuse pas d'aider, bien au contraire, mais fournir un programme tout fait ne correspond pas à la philosophie du site.

En tout cas, on est tous prêt à aider si besoin pour la mise au point !
Bonjour Thierry,

J'ai au club, car je suis le président du club de Franconville "Le Train d'Enfer", 3 ou 4 membres qui se débrouillent un peu en programmation Arduino (ce qui n'est pas mon cas). Le sujet est déjà dans leurs mains, ils se penchent dessus, ce qui m'a fait venir ici pour poser ces questions est surtout l'idée d'avoir une autre approche :D D'ailleurs, dans les réponse que j'ai déjà eu, deux idées "nouvelles" sont apparues.
A savoir que j'ai aussi un gros site sur les logiciels d'architecture grand public dans lequel j'ai moi aussi souvent la même réponse ::)

J'ai donné le lien de se sujet sur le forum de mon club afin que les copains puissent suivre les idées qui viennent d'ici, je ne doute pas que l'un d'entre eux se fera un plaisir de me faire le programme. Je pose ici des questions complémentaires, certaines fonctions ou possibilités, vos retours sont très intéressant et vont surement nous permettre de faire un bel outil de mesure "statique" qui intéressera surement la communauté.

Voiloù ;)
Président du Train d'Enfer de Franconville
Président d'Union Rail 95

msport

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2217
  • HO avec DCC++ en DIY Réseaux très éphémères
    • Voir le profil
Re : Boite de mesure de vitesse Arduino
« Réponse #9 le: octobre 12, 2020, 10:09:11 pm »
Bonjour,
bienvenue sur Locoduino qui est, comme vous l'avez bien noté, un site participatif.
Ci-joint, un programme écrit vite fait, mal fait. Néanmoins si vous l'utilisez, vous vous engagez à publier ce que vous en faites sur le forum LOCODUINO.

 *    Cahier des charges, complété par des hypothèses
 *    https://forum.locoduino.org/index.php?topic=1072.0;topicseen
 *
 *    adapté de
 *    https://www.instructables.com/Arduino-Frequency-Counter/
 *   
 *    cablage suivant
 *    https://www.locoduino.org/spip.php?article273 pour le capteur : signal connecté au Pin 3
 *     
 *    et LCD 20x4 I2C : SDA = A4, SCL = A5
 *   
 *    OSSW

PS : un tour sur internet donne les REED capables de commuter au plus à 200 Hz, ce qui fait ~40Km/h avec votre montage, si je ne me suis pas trompé.
« Modifié: octobre 12, 2020, 11:25:17 pm par msport »
Cordialement

Escargot

  • Newbie
  • *
  • Messages: 14
    • Voir le profil
    • Le Train d'Enfer
Re : Boite de mesure de vitesse Arduino
« Réponse #10 le: octobre 26, 2020, 11:15:25 am »
Bonjour,

Nous commençons à travailler sur le code, je reviendrais vers vous pour vous faire part de nos avancés.

Nous souhaitons afficher les infos suivantes :
Vitesse d'un aimant à l'autre
Vitesse moyenne sur 3 ou 5 aimants pour les petites vitesses
Vitesse moyenne sur 20 aimants pour les grandes

Distance en mètres réels depuis l'appuie sur le bouton
Distance au 1/87 depuis appuie sur le bouton
Pour les deux distances, est-il possible de figer l'affichage à la deuxième impulsion ? La première reset, la deuxième fige, la suivante reset et ainsi de suite... Le but est de lire le résultat alors que la roue tourne encore 😇

Merci pour vos conseils et avis ;)
« Modifié: novembre 24, 2020, 10:33:04 pm par Escargot »
Président du Train d'Enfer de Franconville
Président d'Union Rail 95

msport

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2217
  • HO avec DCC++ en DIY Réseaux très éphémères
    • Voir le profil
Re : Boite de mesure de vitesse Arduino
« Réponse #11 le: octobre 26, 2020, 10:20:35 pm »
Bonsoir,

vos aficionados auront surement plus de difficultés à mettre au point la capture de l'information que de la présenter sur le LCD 4x20 en différentes déclinaisons. Mais il vaudrait mieux leur parler un langage qu'ils comprennent bien, celui du cahier des charges fonctionnel. C'est à dire l'information que vous voudriez avant de donner la solution au problème auquel vous pensez. (par exemple pourquoi 1, 3/5 plutôt que 20 aimants)

De base pour figer l'affichage , il suffit de ne plus le mettre à jour, ça c'est simple !
Et pas compliqué de réinitialiser une variable sur l'appui d'un bouton. C'est probablement un cas d'école pour l'étude d'un compteur.

Plus difficile est de structurer les données qui vous intéressent et comment les décliner.
Cordialement

Escargot

  • Newbie
  • *
  • Messages: 14
    • Voir le profil
    • Le Train d'Enfer
Re : Boite de mesure de vitesse Arduino
« Réponse #12 le: novembre 24, 2020, 10:54:09 pm »
Bonjour à tous,

Le projet à bien avancé, la boite est fonctionnelle, les mesures sont hyper précises. Un bouton permet de figer l'affichage pour lecture et ensuite réinitialisation.
Il me reste une petite chose à régler : Sur l'afficheur de 4 lignes, je voudrais que les résultats soient alignés à droite, je ne trouve pas l'astuce qui le permettrait.
L'écran est sous LiquidCrystal_I2C

J'affiche ce qui est en haut, je voudrais ce qui est en bas ::) en faisant en sorte que le décalge se fasse vers la gauche lorsque la valeur à afficher augmente, bien évidemment ;)



Le bout de code qui affiche
if((new_lcd_time - lcd_time) > 1000)
    {
    // speed_avg = (3600 * dist_avg)/(new_lcd_time - lcd_time);           // 3.6 = (3600 sec/h * 1000 ms/sec) / 1000m/km

    lcd.setCursor(0, 0);
    lcd.print("Pulse cnt:          ");
    lcd.setCursor(0, 1);
    lcd.print("Dist.en m:          ");
    lcd.setCursor(0, 2);
    lcd.print("Dist.en km:         ");
    lcd.setCursor(0, 3);
    lcd.print("Vit.moy.:       km/h");

    lcd.setCursor(11, 0);
    lcd.print(pulse_cnt_tot);
     
    lcd.setCursor(13, 1);
    lcd.print(dist_totHO/100);
     
    lcd.setCursor(11, 2);
    lcd.print(dist_tot/1000);
     
    lcd.setCursor(11, 3);
    lcd.print(speed_avg);
     
 #ifdef DEBUG   
     Serial.print("pulse_cnt: ");
     Serial.print(pulse_cnt_tot);
     Serial.print("   - distance_avg (m): ");
     Serial.print(dist_avg);
     Serial.print("   - speed_avg (km/h): ");
     Serial.println(speed_avg);
#endif
     lcd_time = new_lcd_time;
     ref_time_avg = 0;
     dist_avg = 0;
     pulse_cnt = 0;
    }
Président du Train d'Enfer de Franconville
Président d'Union Rail 95

msport

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2217
  • HO avec DCC++ en DIY Réseaux très éphémères
    • Voir le profil
Re : Boite de mesure de vitesse Arduino
« Réponse #13 le: novembre 24, 2020, 11:21:43 pm »
Bonsoir,
probablement quelque chose à faire avec :
rightToLeft(void)
à voir dans LiquidCrystal_I2C.cpp
Cordialement

Thierry

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 810
    • Voir le profil
Re : Boite de mesure de vitesse Arduino
« Réponse #14 le: novembre 25, 2020, 08:52:44 am »
Jolie réalisation. Pour le cadrage à droite des valeurs, je passerais par le code plutôt que par l'écran. La chaine de caractères devrait être construite avec les valeurs et ensuite envoyée à l'écran. Pour construire la chaine, plusieurs solutions : utiliser un sprintf avec le bon format, ou construire la chaine à la mimine en considérant une virgule fixe pour les distances placée par exemple au caractère 18, et un remplissage des chiffres en extrayant les dizaines au caractère 16, les unités au 17, les dizièmes au 19 etc...