IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

3 chiffres après la virgule


Sujet :

Arduino

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    966
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 966
    Par défaut 3 chiffres après la virgule
    Bonjour à tous,

    Dans mon projet ,j'utilise une mesure de tension et courant à partir d'un module INA219
    celui-ci me permet de mesurer :
    le "shuntvoltage"
    le "busvoltage"

    mes variables que j'ai déclarée sont les suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    float shuntvoltage = 0.0;
    float busvoltage = 0.0;
    mais malheureusement je n'ai que 2 chiffres significatifs après la virgule

    comment puis-je faire pour avoir 3 chiffres après la virgules svp ?

    merci mille fois

    pascal

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    Par défaut
    Citation Envoyé par cobra38 Voir le message
    mais malheureusement je n'ai que 2 chiffres significatifs après la virgule

    comment puis-je faire pour avoir 3 chiffres après la virgules svp ?
    Je suppose que tu parles de l'affichage de la valeur avec Serial.print() et non pas de la précision de son stockage.

    Si c'est bien le cas, la lecture de la documentation s'impose.

  3. #3
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    966
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 966
    Par défaut
    Bonsoir Jerome

    En fait pour afficher busvoltage j'utilise ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
            u8g2.drawStr(0, 0, text1);
    	u8g2.setCursor(75, 0);
    	u8g2.print(busvoltage);
    	u8g2.print(" V");
    Et mon premier réflexe a été de mettre bêtement ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
            u8g2.drawStr(0, 0, text1);
    	u8g2.setCursor(75, 0);
    	u8g2.print(busvoltage,3); <====
    	u8g2.print(" V");
    mais çà ne change rien ....j'ai toujours que 2 chiffres après la virgule
    et c'est bien de précision plus que d'affichage qu'il s'agit je pense
    c'est pourquoi je me suis permis de faire cette demande

    EDIT : j'ai essayé ceci :

    mais là aussi sans succès


    pascal

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    Par défaut
    Pourtant ça devrait fonctionner car la fonction print() de la bibliothèque u8g2 reprend la fonction print() de la bibliothèque Arduino : https://github.com/olikraus/u8g2/wik...eference#print

    L'exemple suivant fonctionne parfaitement de mon coté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    #include <Arduino.h>
    #include <U8g2lib.h>
    #include <Wire.h>
     
    U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);
     
    void setup(void) {
     
      u8g2.begin();
      u8g2.setFont(u8g2_font_10x20_tf);
     
    }
     
    void loop(void) {
     
      float busvoltage = 0.123456789;
     
      u8g2.firstPage();
      do {    
        u8g2.setCursor(0, 15);
        u8g2.print(busvoltage, 3);
        u8g2.print(" V");
      } while ( u8g2.nextPage() );
      delay(1000);
     
    }
    L'écran affiche bien 0.123 V

    Citation Envoyé par cobra38 Voir le message
    et c'est bien de précision plus que d'affichage qu'il s'agit je pense
    Le type float a une précision maximale de 7 décimales.

  5. #5
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    966
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 966
    Par défaut
    merci Jerome

    je joins le croquis à toute fin utile

    mais à la lumière de tes explications
    je ne vois donc pas où est mon erreur (?)
    peut-être est-ce le fait de mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    float busvoltage = 0.0;
    en lieu et place de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    float busvoltage = 0;

    pascal
    Fichiers attachés Fichiers attachés

  6. #6
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 908
    Par défaut
    Il ne faut pas redéfinir DEC

    Il faut juste faire un Serial.print(valeur,3); pour 3 chiffres après la virgule si valeur est un float ou double

  7. #7
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    966
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 966
    Par défaut
    çà fonctionne effectivement
    j'ai mis ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
           //*****************************
    	u8g2.drawStr(0, 0, text1);
    	u8g2.setCursor(75, 0);
    	u8g2.print(busvoltage,3);
    	u8g2.print(" V");
    	//******************************
    	u8g2.drawStr(0, 15, text2);
    	u8g2.setCursor(75, 15);
    	u8g2.print(loadvoltage,3);
    	u8g2.print(" V");
    	//******************************
    et j'ai bien mes 3 chiffres après la virgule
    encore un mystère associé à une mauvaise manip de ma part
    mille pardons pour le dérangement
    je clôture le post

    encore merci

    pascal

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. arrondir un nombre à 2 chiffres après la virgule
    Par El Saigneur dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 01/02/2005, 08h36
  2. Commande pour afficher des chiffres apres la virgule
    Par manar dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 23/09/2004, 18h28
  3. Chiffres après la virgule figés
    Par bondjames dans le forum Bases de données
    Réponses: 6
    Dernier message: 10/03/2004, 23h09
  4. [MFC] Nombre de chiffres après la virgule
    Par karl3i dans le forum MFC
    Réponses: 3
    Dernier message: 27/01/2004, 13h04
  5. Nb de chiffres après la virgule ?
    Par Thcan dans le forum C
    Réponses: 10
    Dernier message: 17/09/2003, 21h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo