Für dieses Forum muß Javascript im Browser aktiviert werden!
Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C2 Quellcode formatieren: <code>Quellcode</code> ASM Quellcode formatieren: <asm>Quellcode</asm> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! > Hallo m8_nix, > > > ich sehe grade diese Funktion kann so nicht funtzen.... vielleicht liegt ja darin schon deine > > fragende Haltung begründet? > > Dadurch das sich im long-Format die Werte 105625 (10,5625°C) und 106 (10,6000°C) nicht Exponentiell > > von einander unterscheiden lassen (fehlende Nachkomma "Nullen") wird im vorliegendem Fall der letztere > > Wert "10,6°" tatsächlich niedrieger "angesehen" als der in wirklichkeit Niedrigere (10,5625°) > > Wie kommst Du denn darauf ? Das stimmt nämlich nicht. > Du weißt schon, was ein Festkommainteger ist, oder? > Wenn mit <code>ds1631.readl()</code> ein Wert ausgelesen wird, hat dieser > immer vier Nachkommastellen. Keine mehr, und keine weniger. > Ein Festkommainteger ist nur eine Anwenderdefinitionen, bei der der Anwender selbst > wissen muß, wo das Komma sitzt. > Es ist einfach eine Kommazahl, die um den Faktor 10, 100, 1000 usw. multipliziert wurde. > Im Fall readl() kann man die Einheit hundertstel Mikrograd nennen, > was vier Nachkommastellen entspricht. > Falls es den Wert 10,6000° beim DS1631 wirklich geben würde, ist das bestimmt > nicht der Rückgabe wert 106, sondern 106000 oder in Worten huntertundsechstausend. > Aber gehen wir von Werten aus, die vorkommen können. (vielfaches von 0,0625K) > Nehmen wir also die Temperaturen 10,5625°C und 10,6250°C an. > Als Festkommainteger sind das die Werte 105625 und 106250. > Wenn Du nun von den 106250 die 105625 abziehst, erhälst Du 625. > Und das sind 0,0625K. > > Also denke bitte nicht unnötig kompliziert. > Die Sache ist ganz einfach. > Darum habe ich bei der CC2 auch die Festkommainteger in Mode gebracht, da > diese meist einfacher handhabbar sind, als Float-Zahlen. > (Und deutlich weniger Rechenzeit benötigen) > > Allerdings hast Du mit einem recht. Deine Funktion kann nicht funktionieren: > <code>long t1, t2; > float tdelta; > function build_diff() returns float; > { > t1=ds1631.readl(0); // 0=Adresse des ersten Sensors > t2=ds1631.readl(1); // 1=Adresse des zweiten Sensors > tdelta=t2-t1; > }</code> > > Du hast ein Semicolon nach dem "returns float" in der Funktionsdefinition. > Das ist nicht zulässig. > Dann gibst Du keinen Wert in der Funktion zurück. > Somit ist der Rückgabewert immer 0. > Und dann mach es keinen Sinn die Differenz der Festkommaintegerwerte t1 und t2 > in einem Float zu speichern, da ein Festkommawert für einen Float keine Kommazahl darstellen. > Du müsstest Deine Funktion dann folgendermaßen umschreiben: > <code>long t1, t2; > float tdelta; > function build_diff() returns float > { > t1=ds1631.readl(0); > t2=ds1631.readl(1); > tdelta=(t2-t1)*0.0001; // Festkommainteger mit 4 Nachkommastellen > // in Floatumrechnen > return tdelta; > }</code> > > MfG André H.