Forum: Mikrocontroller und Digitale Elektronik Fießkomma auf Display???


von Trasher (Gast)


Lesenswert?

hallo.

ich verwende einen 90S8535 und den CodevisionAVR.
Ich will einen FLOAT Wert auf dem Display(4x16) ausgeben.
Es funktioniert nicht. Der Compiler bringt immer
eine Fehlermeldung. Was kann ich da tun???

float p1;
unsigned int ad_wert;

while (1)
      {
      // Place your code here
       ad_wert = read_adc(0);
       p1 =  0,92215533 * ad_wert + 143,3427762;

       sprintf(text,"%f",p1);
       lcd_gotoxy(0,0);
       lcd_puts(text);
      };
}

von Andreas Jäger (Gast)


Lesenswert?

Da Du die Fehlermeldung nicht angibst, nur eine Vermutung.
Dezimalzeichen ist idR ein Punkt und kein Komma:

p1 =  0.92215533 * ad_wert + 143.3427762;

Ausserde hast Du ad_wert als unsigned int deklariert, daher würde ich
schreiben:

p1 =  0.92215533 * (float) ad_wert + 143.3427762;

um ad_wert explizit in float umzurechnen.


(Ich kenne allerdings weder dDeinen Compiler noch AVRs)

Andreas

von Thomas Faktor (Gast)


Lesenswert?

Hallo,

ich bin zwar kein c profi

aber ich glaub da fehlt ein

char text[64];

steht halt so in den lcd beispielen von codevision

mfg

Thomas

von Jochen (Gast)


Lesenswert?

float zahlen gibt man doch x=0.1515f; an
vielleicht kann man f weglassen hab das aber noch nicht ausprobiert

von kamil (Gast)


Lesenswert?

hallo,
da fehlt die #include <stdio.h>
und char text[16];
und es ist so, das man bei floatzahlen 9.1453 schreiben muss, anstatt
9,1453,
denn sonst nimmt der compiler nur die 9 und schneidet die kommastellen
ab.
grüsse

von Thomas Faktor (Gast)


Lesenswert?

@Kamil

müsst das nicht char text[64] sein
sind ja 16 x 4 zeichen als 64 zeichen


Mfg

Thomas

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.