Hallo zusammen, ich habe mal wieder eine Frage. Ich möchte meine Tempearturwerte (von hinten gesehen) immer an der selben stelle haben. Beispiel: LCD (16,2)
0 1 2 3 4 5 6 7 8 9 10 11 etc....
1 0 . 1 ° C lcd.setCursor(5,1)
1 . 1 ° C lcd.setCursor(6,1)
1 . 1 ° C lcd.setCursor(7,1)
1 0 . 1 ° C lcd.setCursor(6,1)
habe versucht es mit einer "if Abfrage" zu bewerkstelligen was auch zum Teil klappt. Leider scheint es der "if Abfrage" egal zu sein ob es 9,9 oder -9,9 ist. Hier mal ein Code Auszug:
void ShowMin() { // Minimale Temp. / Luftfeuchte auf LCD darstellen
tempupdate = 1; // Tempupdate auf 1 setzten um nach Anzeige ein Update des Screens zu erzeugen
lcd.setCursor(0,1); // Cursorbeginn auf Zeichen 0, Zeile 2
lcd.print(" "); // Trick um einen Teil des Display zu löschen ;)
lcd.setCursor(0,1); // Cursorbeginn auf Zeichen 0, Zeile 2
lcd.print("Min:"); // Text "Min:"
if (temp_ti_min < -9.9){ // Wenn Temp. < -9.9°C
lcd.setCursor(5,1); // Cursorbeginn auf Zeichen 5, Zeile 2
}
if (temp_ti_min < 0.0){ // Wenn Temp. < -0.0°C
lcd.setCursor(6,1); // Cursorbeginn auf Zeichen 5, Zeile 2
}
//if (temp_ti_min < 9.9){ // Wenn Temp. < 9.9°C
//lcd.setCursor(7,1); // Cursorbeginn auf Zeichen 5, Zeile 2
//}
else { // Sonst normale Ausgabe
lcd.setCursor(6,1); // Cursorbeginn auf Zeichen 6, Zeile 2
}
Hoffe es ist versändlich. Werde noch zum Hirsch....
kleiner <-9,9 // 3 Zeichen vor Komma
zwischen >=-9,9 und <0,0 // 2 Zeichen vor Komma
zwischen >=0,0 und <9,9 // 1 Zeichen vor Komma
größer >9,9 // 2 Zeichen vor Komma
danke für deine Antwort. Die Temperaturwerte werden in einer "float" Variable gespeichert.
Ich werde es heute Abend gleich probieren und dann wieder berichten.
if (temp_ti_min < -9.9){ // Wenn Temp. < -9.9°C
lcd.setCursor(5,1); // Cursorbeginn auf Zeichen 5, Zeile 2
}
if (temp_ti_min < 0.0){ // Wenn Temp. < -0.0°C
lcd.setCursor(6,1); // Cursorbeginn auf Zeichen 6, Zeile 2
}
if (temp_ti_min < 9.9){ // Wenn Temp. < 9.9°C
lcd.setCursor(7,1); // Cursorbeginn auf Zeichen 7, Zeile 2
}
else { // Sonst normale Ausgabe
lcd.setCursor(6,1); // Cursorbeginn auf Zeichen 6, Zeile 2
}
ist, dass ja die nachfolgenden if auch immer zutreffen. Entscheidend für die Cursorposition ist somit immer die letzte if/else Kombination, die ersten zwei if sind nutzlos.
Mach vor if Nummer zwei und drei noch ein else, dann sollte es passen.
Zudem ist die Abfrage im letzten if auch noch falsch ( < 9.9, müßte <= 9.9 lauten). Ich würde auch die Abfragewerte anders setzen um Rundungsfehler zu umgehen (kann ja intern auch 9.900001 sein).
Wenn Du dann die Abfragen noch verschachtelst reduzierst du den "worst case" von drei auf zwei if Abfragen in Folge.
Dann noch den Schleifeninhalt einrücken erhöht ungemein die Lesbarkeit.
if (temp_ti_min < 0.0){ // Wenn Temp. < 0.0°C
if (temp_ti_min <= -10.0){ // Wenn Temp. <= -10.0°C
lcd.setCursor(5,1); // Cursorbeginn auf Zeichen 5, Zeile 2
}
else{
lcd.setCursor(6,1); // Cursorbeginn auf Zeichen 6, Zeile 2
}
}
else if (temp_ti_min < 10.0){ // Wenn Temp. < 10.0°C
lcd.setCursor(7,1); // Cursorbeginn auf Zeichen 7, Zeile 2
}
else { // Sonst normale Ausgabe
lcd.setCursor(6,1); // Cursorbeginn auf Zeichen 6, Zeile 2
}