ich probiere nun seit Stunden und finde einfach keine Lösung.
Bei folgender Formel lcd1.print((tempK /10 + 5) - (DifferenztemperaturS2,0));
kommt als Ergebnis ( Anzeige im LCD2) immer nur der Wert der DifferenztemperaturS2 raus.
ich hab die Formel schon in die einzelnen Rechenschritte zerlegt und das hat auch nicht geholfen.
Weiß jemand einen Rat?
Den vollständigen Sketch habe ich unten angehängt.
Ansonsten, lasse Dir den Wert von tempK und DifferenztemperaturS2 direkt davor seriell ausgeben.
Dann sieht man erstmal ob die richtigen Werte überhaupt bei der Formel ankommen.
Oder mal wieder ein Problem mit float und Ganzzahlen.
Schreibe 10.0 statt 10 und 5.0 statt 5
,0 bedeutet Anzahl der Stellen hinter dem Komma - also soll hier wohl nach dem Komma nichts mehr angezeigt werden.
Versuche mal zunächst dir die Zwischenwerte auf dem Display anzeigen zu lassen. So mache ich es, wenn ich am Code "rumfeilen" will. Entweder noch ein 3. Display ran, oder einen Codeblock auskommentieren und dafür eine Prüfroutine, die dir die Variablen als Rohwerte und die Zwischenergebnisse anzeigt.
Ich habe mal in meinen Projekten nachgeguckt, ich mache immer ein Leerzeichen zwischen ,"Antahl der Nachkommastellen". Vielleicht interpetiert der Compiler das ansonsten als S mal 2,0, oder weiß der Fuchs was...
Bei folgender Formel lcd1.print((tempK /10 + 5) - (DifferenztemperaturS2,0));
kommt als Ergebnis ( Anzeige im LCD2) immer nur der Wert der DifferenztemperaturS2 raus.
warum sollte es auf LCD2 angezeigt werden, wenn du schreibst lcd1.print.....
also bei mir klappt das . Einmal wird -4,25 und darunter -4 auf dem Display angezeigt.
mit Bsp. Werten:
float tempK = 22.5;
float DifferenztemperaturS2 = 11.5;
@ Dirk:
in dem Fall ja, bei anderen Formelzusammenstellungen sollte man die Klammern setzen. Selbst mancher vermeintlich guter Taschenrechner kennt keine Punkt vor Strich Rechenregel.
Hmm.
liquidcrystal_i2c ist kompatibel zur in Arduino beschriebenen LCD-Bibliothek.
Wenn ich mir die LCD-Bibliothek ansehe, dann steht dort:
lcd.print(data, BASE)
data: the data to print (char, byte, int, long, or string)
BASE (optional): the base in which to print numbers: BIN for binary (base 2), DEC for decimal (base 10), OCT for octal (base 8), HEX for hexadecimal (base 16).
Demnach ist "0" dann was? Meiner Meinung nach ungültig?
Bei Float gibt es die Anzahl der Nachkommastellen an. Das obige ist natürlich keine Float Division, da alles Integer sind. Das ist dann auch noch ein Fehler wenn man da Nachkommastellen möchte!
Bei anderen Datentypen kommt u.U. Unsinn heraus. Das hatten wird schon mal ein Thema drüber, wo jemand sowas gemacht hat:
int var = 5;
Serial.println(var, 4);
Und sich dann gewundert hat dass da Blödsinn rauskommt. Das läuft, aber es wird dann mit Basis 4 gerechnet. Ich weiß nicht was bei 0 gemacht wird.