Int in string umwandeln und am LCD ausgeben?

OP #1993716
Lesenswert?

Ich möchte über einen Temperatursensor(MCP9700) die Temperatur mittels 
ADC umwandeln und das Ergebnis am LCD-Display ausgeben.

Am LCD kann ich aber nur einen string übergeben. Wie kann ich ein int in 
einen string umwandeln? Oder gibt es dafür eine bessere Lösung?
1
while (1)
2
  {
3
    ADCSRA |= (1<<ADSC);            // Start ADC-Wandlung 
4
      while (ADCSRA & (1<<ADSC));    // auf Abschluss der Konvertierung warten
5
       ergebnis = (ADC-200)/4+2;  // Anpassung an die Temperaturkennlinie 
6
                    // (y=kx+d) + Korrekturfaktor
7
    _delay_ms(500);  
8

9
    lcd_send(BEFEHL, LCD_CLEAR);
10
    lcd_write("...ein String...");
11
  }
OP #1995622
Lesenswert?

Danke Karl Heinz, das hat mir sehr weitergeholfen.

Soweit funktioniert auch alles, bis auf die Ausgabe negativer Zahlen!

Mit ergebnis = (ADC-200)/4; berechne ich die Temperatur. Bei + 
Temperaturen funktioniert auch alles. Bei - Temperaturen erhalte ich als 
Anzeige z.B. 16376.
Wenn ich die Division weglasse, werden auch die negativen (in dem Fall 
um das 4-fache zuviel) Temperaturen angezeigt?

Wo ist der Wurm?


Hier der Code:
1
while (1)
2
  {
3
    ADCSRA |= (1<<ADSC);            // Start ADC-Wandlung 
4
    while (ADCSRA & (1<<ADSC));    // auf Abschluss der Konvertierung warten
5
    
6
    ergebnis = (ADC-200)/4;    // Anpassung an die Temperaturkennlinie (y=kx+d)               
7

8
    char Buffer[20];
9
    itoa(ergebnis,Buffer,10);
10

11
    sekunde(1);
12
    lcd_send(BEFEHL, LCD_CLEAR);
13
    lcd_write("***Temperatur***");
14

15
    lcd_send(BEFEHL, LCD_SETDDRAM +0x40); // Cursor auf 1.Position Zeile 2
16

17
    lcd_write(Buffer);
18
    lcd_write(" C");
19
  }
#1995700
Lesenswert?

Heimo G. schrieb:
> Wo ist der Wurm?

im Datentyp von ergebnis. Ist das als signed int ergebnis deklariert??

Wenn es nur als int ergebnis deklariert ist, schau mal in den 
Compilereinstellungen, wie der char oder int interpretiert. Man kann da 
oft einstellen ob das dann als signed oder unsigned interpretiert werden 
soll ==>> IMMER signed oder unsigned angeben, sonst kann es Probleme 
geben. Wer die Tipparbeit leid ist deklariert sich kürzere Datentypen 
z.B. uC8 oder sC8, uI16 oder sI16...

unn tschuess
Bernhard

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren