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

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.