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. > > > > > Hallo, > > ich nehme alles zurück und behaupte das Gegenteil André. > Tut mir leid für das unnötige Falschposting. > Man sollte eben so spät Nachts nichts mehr posten > > Chris