Temperaturanzeige auf einem TM1637 Display

Hallo Liebe Community,

ich möchte von einem TMP36 ausgelesene Temperaturen auf einem TM1637 Display anzeigen.
Zweistellig
Dabei können die Temp. etwa zwischen -50 und +50 Grad liegen.
Solange die Werte im positiven Bereich liegen, wird alles korrekt angezeigt. Im ersten Segment wird
nichts angezeigt, in den nächsten beiden der Temperaturwert und dann ein C für Celsius.

Im Minusbereich soll im ersten Segment ein (-) angezeigt werden, in den nächsten beiden der Temperaturwert und dann ein C für Celsius.
Dabei werden leider auf allen 4 Segmenten völlig falsche Daten angezeigt.
Wie kann ich das (-) anzeigen gefolgt von den richtigen Werten und einem großen C.

#
include "TM1637.h" // Einfügen der Bibliothek TM1637.h
#define CLK 10      // CLK Pin des Displays TM 1637
#define DIO 11      // DIO Pin des Displays TM 1637

TM1637 tm1637(CLK,DIO);

int Temperatursensor = A0;
int sensorwert;     // Ausgelesener Wert zwischen 0 und 430
int temperatur = 0; // Hier wird der Temperaturwert abgespeichert


void setup()
{
tm1637.set(BRIGHTEST);
pinMode(A0, INPUT);
}

void loop()
{
int digitone = temperatur / 10;
int digittwo = temperatur % 10; 
 
sensorwert=analogRead(Temperatursensor);   // Auslesen des Sensorwertes
temperatur= map(sensorwert,0,430,-50,150); // Umwandeln des Sensorwertes mit Hilfe des "map" Befehls

if (temperatur >= 0)
      {
      tm1637.display(0,16);         // Schreibt ein leeres Segment
      tm1637.display(1,digitone);   // Schreibt die erste Ziffer der Temperatur
      tm1637.display(2,digittwo);   // Schreibt die zweite Ziffer der Temperatur 
      tm1637.display(3,12);         // Schreibt ein C am Ende - für Grad Celsius
      }  
if (temperatur < 0)
      {
      tm1637.display(0,77);           // Hier ein (-)
      tm1637.display(1,digitone);   // Schreibt die erste Ziffer der Temperatur
      tm1637.display(2,digittwo);   // Schreibt die zweite Ziffer der Temperatur
      tm1637.display(3,12);         // Schreibt ein C am Ende - für Grad Celsius
      }
}

Ich kenne deine Library nicht, aber ich vermute, dass die display Methode nicht mit negativen Werten zurecht kommt. (Was du ja auch gar nicht willst)
Musst du die Berechnung von digitone und digitwo anpassen.
Und wie ein '-' anzuzeigen ist, solltest du die Library fragen.

Hi

'Völlig falsche Werte' kann wiederum ALLES sein - wenn der Rückgabewert bei negativen Temperaturen z.B. ein 2er-Komplement ist, wird Da auch nicht direkt die richtige Zahl angezeigt - aber durch das gesetzte höchste Bit ist die Zahl als Negativ gekennzeichnet.
Genau so funktionieren auch die signed-Datentypen - Du könntest also prüfen, ob ein Wert negativ ist, wenn Ja, dann das - anzeigen (sonst ein Leerzeichen) und den Wert 'gleich MInus Wert' rechnen - so bekommst Du einen positiven Wert.

if (wert<0){
  lcd.print("-"); //Minuszeichen für Minus
  wert=-wert; //aus Negativ mach Positiv
}else{
  lcd.print(" "); //Leerzeichen für Plus
}
lcd.print(wert); //Wert ausgeben

MfG