affichage de 2 chiffres après la virgule

bonjour,

Après plusieurs recherche je suis parvenue à afficher les chiffres avant la virgule mais je ne peux pas afficher les 2 chiffres après la virgule
pourriez-vous m'aider s'il vous plaît avec des explications claires je suis débutant
merci

#include <InvertedTM1638.h>
#include <TM1638.h>

TM1638 module(10, 11, 9);


                // 0   1  2   3    4    5    6  7   8    9   10    11  12  13  14   15   16  17  18  19
                // 0   1  2   3    4    5    6  7   8    9    A    b   C   d   E    F    °   C   -   Point
 byte dispDig[] = {63, 6, 91, 79, 102, 109, 125,7, 127, 111, 119, 124, 57, 94, 121, 113, 99, 57, 64, 128};
 
 long values1 = 32.45; 
 
 
 byte values[] = { 0,0,0,0,0,0,0,0 };
 int theDigits[] = { 0,0,0,0,0,0,0,0 };

void setup()
{
  Serial.begin(9600);
    
  module.clearDisplay();
  module.setupDisplay(true, 0);   
 
}
void loop() {

   // Affichage de la valeur (en décimal)                           
   values[7] =  dispDig[values1 % 10];
   values[6] = dispDig[values1 / 10 % 10];
   values[5] = dispDig[values1 / 100 % 10];
   values[4] = dispDig[values1 / 1000 % 10];
   values[3] = dispDig[values1 / 10000 % 10];
   values[2] = dispDig[values1 / 100000 % 10];
   values[1] = dispDig[values1 / 1000000 % 10];
   values[0] = dispDig[values1 / 10000000 % 10];
 
module.setDisplay(values);


Serial.println(values1);

    }

grankaba:
bonjour,

Après plusieurs recherche je suis parvenue à afficher les chiffres avant la virgule mais je ne peux pas afficher les 2 chiffres après la virgule
pourriez-vous m'aider s'il vous plaît avec des explications claires je suis débutant
merci

 long values1 = 32.45;

Bonjour
un long ne peu pas comporter de fractions decimales
je vois que tu souhaite utiliser un tm1638 avec la lib batista
le plus simple : tu multiplie ta valeur par 100 et tu determine quel afficheur doit recevoir le point de separation decimal.

Je me demande meme si la lib ne gere pas ça directement, je regarderais plus tard

edit : lire çà

Merci pour avoir pris le temps de me répondre

Si je multiples ma variable par 100 ça me donne (3200)

Pour que la variable prennent des fractions décimal je la déclarant flottante (float values1 = 32.45;)

Quand je détermine la variable en flottante le compilateur se plante

error: invalid operands of types 'float' and 'int' to binary 'operator%'

merci

grankaba:
Merci pour avoir pris le temps de me répondre

Si je multiples ma variable par 100 ça me donne (3200)

Pour que la variable prennent des fractions décimal je la déclarant flottante (float values1 = 32.45;)

Non !
la lib ne permet d'afficher que des entiers
tu oublie les variables float pour la lib TM1638
si ce que tu veux afficher sur un TM1638 est 32.45 et que la variable d'origine est un float , tu multiplie par 100 ton float vers un entier ( 3245)
tu affiche par la lib la valeur 3245 et tu positionne le point decimal sur le bon digit

i

bonjour

Merci pour la réponse qui fonctionne

En ce qui concerne cette information
(module1.setDisplayToDecNumber(15, 0, false):wink:

Je l'avais trouvé sur le net, mais je n'ai pas trouvé pour afficher un chiffre sur un afficheur précis avec cette méthode mais si tu as une idée je suis preneur

Exemple: 3 2. 4 5
Un - égale 1 afficheur - - - - - - - -

Merci

grankaba:
bonjour

Merci pour la réponse qui fonctionne

En ce qui concerne cette information
(module1.setDisplayToDecNumber(15, 0, false):wink:

Je l'avais trouvé sur le net, mais je n'ai pas trouvé pour afficher un chiffre sur un afficheur précis avec cette méthode mais si tu as une idée je suis preneur

Exemple: 3 2. 4 5
Un - égale 1 afficheur - - - - - - - -

Merci

bonjour
voir

bonjour

Avec un petit peu de retard
merci beaucoup pour l'aide
à bientôt sur le forum