Conversion entier en decimal?

Bonjour,

J'ai la partie de code suivant. Comment faire pour que interfreq affiche une valeur décimale de 1.750 au lieu de 1750 ?
Merci de votre aide

// Constants
#define IF_FREQ   1750         //Enter your IF frequency, ex: 455 = 455kHz, 10700 = 10.7MHz,  0 = to direct convert receiver or RF generator, + will add and - will subtract IF  offfset.
#define BAND_INIT 11       //Enter your initial Band (0-20) at startup,  ex: 0 = Freq Generator, 1 = 800kHz (MW), 6 = 7.2MHz (40m), 10 = 14.1MHz (20m). 
#define XT_CAL_F 0        //Si5351 calibration factor, adjust to get exatcly 10MHz. Increasing  this value will decreases the frequency and vice versa.
#define S_GAIN 303         //Adjust the sensitivity of Signal Meter A/D input: 101 = 500mv; 202 = 1v;  303 = 1.5v; 404 = 2v; 505 = 2.5v; 1010 = 5v (max).

// Global variables
uint32_t freq = 10000000UL; // Start at 10.0MHz
uint32_t freqold;
uint32_t fstep = 1000; // Default step 1kHz
int16_t interfreq = IF_FREQ;

// Affiche la fréequence IF
u8g2.setFont(u8g2_font_6x12_tr);
if (count == 11) {
    sprintf(buffer, "-%dMHz", interfreq);
  }
if (count != 11) {
    sprintf(buffer, "+%dMHz", interfreq);
  }
u8g2.drawStr(75, 42, buffer);

Il est absolument necessaire que tu prennes du temps pour lire les régles et bonne pratique pour bien poster.

Pour résoudre ton probléme, tu peux utiliser une variable de type flottant et pas un entier.
Il faudra bien evidement diviser par 1000 ou mettre directement la bonne valeur dans IF_FREQ

Sur quel type d’arduino?

Merci d’éditer votre post en utilisant le :pencil2: dans la barre d’outil juste sous votre post et rajoutez les balises de de code :

  • sélectionner la partie du texte qui correspond au code
  • appuyez sur l’icône <code/> dans la barre d’outils pour indiquer que c’est du code

(Assurez vous aussi d’indenter le code correctement dans l’IDE avant de le copier pour le coller ici. Cela se fait en pressant ctrlT sur PC ou cmdT sur un Mac)

il serait bon de (re)lire les recommandations listées dans « Les bonnes pratiques du Forum Francophone”

Bonjour,

Ça dépend du processeur.
si c'est un processeur AVR (uno, mega, ...)
dtostrf(interfreq/1000.0,5,3,buffer);

Si c'est un esp32, SAM...
sprintf(buffer,"%f",interfreq/1000.0);

@andbro1965 Ce serait bien aussi de mettre des titres qui ont du sens parce celui-là il doit s'appliquer à environ 95% des fils de discussion sur le forum.
Merci de changer le titre.
Lorsqu'on survole le titre avec la souris cela fait apparaître une icône en forme de crayon.
Tu cliques dessus et tu peux modifier ton titre.

Merci à fdunews de me rappeler que mon titre était effectivement trop général.

Merci J-M-L, ca fonctionne très bien avec dtostrf. Maintenant, est-ce qu'il est possible d'ajouter le préfixe + ou -, ainsi que le texte MHz a la fin.
Exemple au final: +1.750MHz ou -1.750Mhz

Merci beaucoup

C'est @kamill qu'il faut remercier.

Il suffit de conserver la même structure que dans ton code d'origine avec un test sur count pour sélectionner tel ou tel écriture.

C’est pas moi - merci @kamill

Pour la question si vous pouvez utiliser sprintf() alors il y a moyen de forcer le signe dans la chaîne qui définit le format et bien sûr de rajouter du texte .