Forum: Mikrocontroller und Digitale Elektronik float Vairable in char umwandeln


von Har (Gast)


Lesenswert?

Hallo liebes Forum,

ich programmiere einen STM32 und möchte Sensor-Daten an ein LCD-Modul 
anzeigen lassen.
Die Sensor-Daten sind vom Typ float.
An das LCD-Modul übergebe ich mittels einer Funktion aber einen string.
Wie kann ich meine Variable umwandeln, damit ich sie auf meinem 
LCD-Display anzeigen lassen kann?
Bitte wenn möglich Funktionen anbieten, wo keine "speziellen" Libraries 
benötigt werden...

Zum testen habe ich mal eine float-Variable definiert:
1
float value = 54.32;

Die Funktion, welcher der string übergeben wird, sieht wie folgt aus:
1
void lcd_string( const char *data )
2
{
3
    while( *data != '\0' )
4
        lcd_data( *data++ );
5
}
6
7
void lcd_data( uint8_t data )
8
{
9
    GPIOD->BSRR |= LCD_RS;    // RS auf 1 setzen        //LCD_PORT |= (1<<LCD_RS);    // RS auf 1 setzen
10
11
    lcd_out( data );            // zuerst die oberen,
12
    lcd_out( data<<4 );         // dann die unteren 4 Bit senden
13
14
    Wait_1uSec( LCD_WRITEDATA_US );
15
}

von Roland F. (rhf)


Lesenswert?

Hallo,
Har schrieb:
> Wie kann ich meine Variable umwandeln, damit ich sie auf meinem
> LCD-Display anzeigen lassen kann?

ftoa()

rhf

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Formatierte Ausgabe: sprintf()

von GEKU (Gast)


Lesenswert?

Ich würde sprintf () verwendet.
1
float x = 3.14;
2
char floatstr [16];
3
4
sprintf (floatstr, "%f", x);
5
6
lcd_string (floatstr);

sprintf liefert die Anzahl, der in floatstr geschrieben Zeichen zurück.

Für %f gibt es noch zusätzliche Steuerzeichen für Formatierung

http://www2.hs-esslingen.de/~zomotor/home.fhtw-berlin.de/junghans/cref/FUNCTIONS/format.html

von Dirk B. (dirkb2)


Lesenswert?

Roland F. schrieb:
> ftoa()

gehört nicht zum C/C++ Standard

Frank M. schrieb:
> sprintf()

Besser snprintf()

von Klaus (Gast)


Lesenswert?

1
mystring = value.ToString("0.00");

ist leider C# statt C/C++ :-)

von Sebastian S. (amateur)


Lesenswert?

Wie die Zeiten sich doch ändern!

Früher gabs hier ein: RTFM.

Heute stellt man die Frage bei Mikrocontroller.Net und bekommt sie 
serviert.

von Solid State Funker (Gast)


Lesenswert?

Har schrieb:
> Die Sensor-Daten sind vom Typ float.

Ohne den Sensor zu kennen: das wird wohl so nicht sein.

Habe noch keinen Sensor gesehen der Float-Zahlen ausgibt.
Und ich habe schon "ein paar" gesehen.

von Solid State Funker (Gast)


Lesenswert?

Har schrieb:
> Bitte wenn möglich Funktionen anbieten

Bitte wenn möglich nicht

Har schrieb:
> LCD-Display

schreiben.

Das wäre nämlich ein Liquid Crystal Display Display, also
ein Display das LCD anzeigen würde.

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.