Temperaturwerte auf LCD anzeigen Ausgabeprobleme!

Gast #1433373
Lesenswert?

Hallo Leute brauch nochmal eine klitzkleine Hilfestellung.
Also empfange Temperaturwerte über die Serielle, welche ich in einem 
Array abspeichere.
Nun möchte ich mir die Werte auf einem Display anzeigen lassen.
Leider Zeigt er mir die Werte als Ascii an, möchte sie aber als Decimal 
dargestellt haben.
Wie geht das nun richtig, hab schon mehrere Sachen durchprobiert.
Hier mal mein Quellcode
1
int Temp;
2
  int h =0;
3
  int Anzeige =0;
4
    unsigned char Nutzdaten[60];
.
.
.
1
          else
2
          {
3
           if(Anzeige ==0)
4
           {
5
             lcd_clear();
6
             lcd_set_cursor(0,LINE0);
7
             lcd_puts(small_font,"Status:");
8
             lcd_set_cursor(0,LINE1);
9
             lcd_puts(small_font,"Kesseltemp.:");
10
             lcd_set_cursor(0,LINE2);
11
             lcd_puts(small_font,"Boilertemp.:");
12
             lcd_set_cursor(0,LINE3);
13
             lcd_puts(small_font,"Puffertemp.:");
14
             Anzeige = 1;
15
           }
16
           lcd_set_cursor(100,LINE0);
17
           Temp = atoi(Nutzdaten[1]);
18
           lcd_putc(small_font,Temp);
19
           lcd_set_cursor(100,LINE1);
20
           Temp = atoi(Nutzdaten[7]);
21
           lcd_putc(small_font,Temp);
22
           lcd_set_cursor(100,LINE2);
23
           Temp = Nutzdaten[33];
24
           lcd_putc(small_font,Temp);
25
           lcd_set_cursor(100,LINE3);
26
           Temp = Nutzdaten[29];
27
           lcd_putc(small_font,Temp);
28
          }
29
        //Anzeige Ende

Ich werd da warscheinlich nicht mit Putc arbeiten können da er mir da ja 
immer nur eine zahl schreiben wird, aber die Tempwerte sind ja 2 bis 3 
Stellig also entweder ne Schleife mit Putc oder wie beim Text puts.
Aber weis ned wie ich da jetzt rangehen soll.
Könnt ihr mir nochmal helfen Bitte?
Gast #1433409
Lesenswert?

Hallo Christian,

wenn du die Temperaturwerte in Nutzdaten[] hintereinander abgespeichert 
hast, mußt du erst die Werte in eine Hilfsvariable zB. s_Temp[7] 
zeichenweise übertragen. Dann kannst du s_Temp mit lcd_puts() ausgeben.
Das atoi() kannst du dir sparen, weil die Temperatur ja schon als 
Zeichenkette vorliegt.
Evtl. kannst du die Ausgabe noch formatieren mit sprintf() - das braucht 
aber viel Speicher.

Gruß Micha
#1433514
Lesenswert?

Danke für die Antworten.
Es funktioniert schonmal ein wenig aber ich muss auch noch die Werte 
durch 2 teilen damit sie richtig werden(ist leider so)
bis jetzt hab ich :
1
lcd_set_cursor(100,LINE0);
2
           itoa(Nutzdaten[1],Temp,10);
3
           lcd_puts(small_font,Temp);
4
           lcd_set_cursor(100,LINE1);
5
           itoa(Nutzdaten[7],Temp,10);
6
           lcd_puts(small_font,Temp);
7
           lcd_set_cursor(100,LINE2);
8
           itoa(Nutzdaten[33],Temp,10);
9
            lcd_puts(small_font,Temp);
10
           lcd_set_cursor(100,LINE3);
11
           itoa(Nutzdaten[29],Temp,10);
12
           lcd_puts(small_font,Temp);
Wie kann ich jetzt noch die Werte durch 2 teilen und dann anzeigen?
Persönliche Seite #1433682
Lesenswert?

Einmal reicht.

Christian Hohmann schrieb:
> was ich auch noch nicht ganz verstehe : warum ist das Array Temp 7
> Felder groß?
Wahrscheinlich um ein komplettes Int plus Stringende als Text aufnehmen 
zu können.

> Noch was auf dem LCD wird hinter jedem Wert noch eine weitere Zahl
> angezeigt, wo kommt die her?

Ich verstehe noch nicht, was genau in Nutzdaten abgelegt ist. Laut 
Variablendeklararion ist es ein String mit 59 Zeichen Länge.

Nutzdaten[33] ist das 34. Char (= 8 Bit) in diesem Array.

itoa wandelt aber einen Int in einen String. Ich würde jetzt eine 
Warnung erwarten, wenn ein Char anstelle eines Int übergeben wird. 
Könnte aber mit interner Typenwandlung auch so funktionieren. In Temp 
werden dann die Zahlen 0..255 (oder -128..127) landen, welche dann auch 
angezeigt werden.
Gast #1433696
Lesenswert?

Hallo,
ich Arbeite gerade an etwas ganz ähnlichem...

Schön dass andere auch noch die HZ- Temperaturen iteressiert...


Nur mach ich noch ne übertragung mir tein, so dass mein Display im Fluhr 
oben im Wohnraum sitzt...
Gast #1433782
Lesenswert?

Ja das machts bei mir auch aber läuf dann über KNX :-)
Also in Nutzdaten[...] steht imer ein Wert z.Bsp: Hex 38 , davon will 
ich den Decimal Wert angezeigt bekommen also 56 bzw. 28 wenn man noch 
durch zwei teielt. mehr steht da nicht drin also auch kein Endzeichen 
oder sowas

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