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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.