Forum: Compiler & IDEs ADC einlesen und umwandeln / vergleichen


von earlyperl (Gast)


Lesenswert?

Hallo Leute,
ich versuche die Temperatur mit einem KTY über ADC einzulesen,
ich konvertiere den angekommenen Wert mit:

void lcd_dez(int tmp)
{
    char buffer[10]={0};
    sprintf( buffer, "%d", tmp);

}

Ich benötige lediglich den Temperaturbereich zwischen 90 und 100°C
deshalb ist keine kallibrierung nötig, ich möchte die gemessenen
Temperaturen einfach umwandeln und auf einem LCD ausgeben, etwa so:

if(buffer=="175"){
lcd_write("23.0");
}

Das funkioniert natürlich nicht, kann mir jemand nen Anstoß zur
Umwandlung geben, oder ne Alternative vorschalgen?

Grüße
earlyperl

von Karl H. (kbuchegg)


Lesenswert?

Die Umwandlung mittels sprintf ist durchaus in Ordnung.
sprintf ist zwar eine "teure" Funktion (Speicherverbrauch), aber
wenn du den Speicher hast, was solls. Eine Alternative zu sprintf
wäre zB itoa(), falls dein Compiler die Funktion zur Verfügung
stellst.

Das allerdings
   if( buffer == "175" )

funktioniert nicht. So kann man Strings nicht auf Gleichheit
überprüfen. Das obige ist ein Vergleich ob 2 Pointer den gleichen
Inhalt haben.

So gehts

#inclde <string.h>

...

    if( strcmp( buffer, "175" ) == 0 )
      lcd_write( "23.0" );

Beim Arbeiten mit Strings (Kopieren, Anhängen, Vergleichen, etc)
immer die str... Funktionen benutzen.

Und Bücher kaufen. Das ist das kleine Ein*Eins der C Programmierung.

von earlyperl (Gast)


Lesenswert?

Hallo,
vielen Dank für die schnelle Hilfe!
Auch die Itoa()-Funktion gefällt mir besser.

Grüße
earlyperl

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.