KTY 81 und negative Temperatur

Gast #348203
Lesenswert?
• ▲
▼
Hallo,

ich habe zwei KTY 81-122 mit einem 2,7 K und einem 1K Wiederstand an je
einem AD Pin meines mega16 hängen.

Nun rechne ich mit dieser Formel:

unsigned int get_temp1 (void)
{
    unsigned int t = 0;

    t = read_adc( 0 );
    t = ((t/1.579) - 154 );

    return t;
}

unsigned int get_temp2 (void)
{
    unsigned int t = 0;

    t = read_adc( 1 );
    t = ((t/1.579) - 304 );

    return t;
}

den AD Wert in Grad C um, und lasse es auf einem LCD anzeigen:

void display_temp (void)
{
      temperatur1 = get_temp1();
      temperatur2 = get_temp2();

      lcd_high(2);
      sprintf( &lcd_buffer[0][0], "   Temperatur   ");
      sprintf( &lcd_buffer[1][0], " %3u \xdfC  %3u \xdfC ",
temperatur1, temperatur2);

      ecu_display_lcdbuffer( 2 );

}

Wie errechne ich denn nun eigentlich minus Temperaturen?

Sobald ich unter 0 Grad komme, habe ich einen Überlauf, und habe eine
Temperaturanzeige von 65... !

Danke für Euere Hilfe!

Gruß Toby
Gast #348210
Lesenswert?
• ▲
▼
Hallo, und vielen Dank für die schnelle Hilfe !!!

Es sieht nun so aus:

signed int temperatur1 = 0;
signed int temperatur2 = 0;

signed int get_temp1 (void)
{
    signed int t = 0;

    t = read_adc( 0 );
    t = ((t/1.579) - 154 );

    return t;
}

signed int get_temp2 (void)
{
    signed int t = 0;

    t = read_adc( 1 );
    t = ((t/1.579) - 304 );

    return t;
}

void display_temp (void)
{
      temperatur1 = get_temp1();
      temperatur2 = get_temp2();

      lcd_high(2);
      sprintf( &lcd_buffer[0][0], "   Temperatur   ");
      sprintf( &lcd_buffer[1][0], " %3d \xdfC  %3d \xdfC ",
temperatur1, temperatur2);

      ecu_display_lcdbuffer( 2 );

}

@ Marco

Danke für den anstatt %3u lieber %3d Tipp!!!

Habe dazu grade noch dieses gefunden.
Wäre ich echt nicht drauf gekommen!

% - ein Prozent-Zeichen ("%"). Es ist kein Argument erforderlich.
b - das Argument wird als Integer angesehen und als Binär-Wert
ausgegeben.
c - das Argument wird als Integer angesehen und das entsprechende
ASCII-Zeichen wird ausgegeben.
d - das Argument wird als Integer angesehen und ein Dezimalwert
(signed) ausgegeben.
u - das Argument wird als Integer angesehen und ein Dezimalwert
(unsigned) ausgegeben.
f - das Argument wird als float angesehen und eine Fließkomma-Zahl
ausgegeben.
o - das Argument wird als Integer angesehen und und als Oktalzahl
ausgegeben.
s - das Argument wird als String angesehen und auch als solcher
ausgegeben.
x - das Argument wird als Integer angesehen und als Hexadezimal-Wert
ausgegeben (mit Kleinbuchstaben).
X - das Argument wird als Integer angesehen und als Hexadezimal-Wert
ausgegeben (mit Großbuchstaben).


Gruß Toby

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.