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 Thomas, > > <i>> eigendlich hast du mit denn long zahlen recht.aber ich muß zugeben das ich das mit dem komma > > setzen noch nie verstanden habe.Ich habe es auch versucht aber dann habe ich als nach kommastelle > > nur ,0 oder ,5 bekommen. mit deiner funktion für den ad592 bin ich auch nicht klar gekommen aber ich habe sie geändert und nu geht es bei mir. > > </i> > > Festkommarechnen mit Integer, das in Deinem Fall sicher reicht, ist ganz einfach: > Es wird mit einer Kommastelle nicht in °C sondern in "dezi-Grad" gerechnet. > Diese Einheit gibt es zwar offiziell nicht, aber vielleicht hilft es zum Verständnis, > wenn man Grad mit Meter und "dezi-Grad" mit Dezimeter vergleicht. > Genauso wie 1 Meter 10 Dezimeter sind, sind 1 Grad 10 "dezi-Grad". > > Wenn Du jetzt meine Funktion zum Auswerten des Sensormoduls benutzt, > dann bekommst Du "dezi-Grad" zurück. z.B. tatsächliche temperatur +32,2°C > enstpricht dem Wert +322. > > Wenn Du jetzt die Temperatur mit einem anderem Wert vergleichen willst, > so muß dieser auch in "dezi-Grad" sein. > z.B. wenn temp größer 24,5°C dann ... : > if temp > 245 { ... } > Ins EEpomn brauchst Du so nur den Integerwert 245 schreiben, der nur 2 Byte > anstatt 8 eines floats benötigt. > > Das Ganze geht auch mit zwei Nachkommastellen: > //---------------------------------------- > function gettemp(long ADC) returns int > //---------------------------------------- > { long Temp; > Temp= 510*ADC; // anstatt 51 510 > return (Temp/25)-250;// Rückgabe wert bei 21,5°C 2150 > } > Bei dem Vergleich von vorhin mußt Du das dann auch beachten: > wenn temp größer 24,5°C dann ... : > if temp > 2450 { ... } > > Wenn Du so eine "Festkommazahl" mit Komma in einen String setzen willst, > dann geht das ganz einfach: > Hier mit einer Kommastelle: (z.B. 1254 für 125,4) > str.putint(s, wert/10); > s=s + "," + ((wert % 10) + 0x30) > > Hier mit zwei Kommastellen: (z.B. 12541 für 125,41) > str.putint(s, wert/100); > s=s + ","; > str.putint(s, wert%100); > > > Ein Workaround ware auch, wenn Du Festkomma im EEProm speicherst, > und dann als Float benutzt: > Wert x =245 für 24,5 °C aus dem EEProm > float f; > f=x * 0.1 // nicht x / 10 schreiben !! > > oder > float f; > f=x; > f=f / 10; > > > <i>> float temp,temp1; > > temp = (ports.adc(0)*25) ; > > temp1=(temp/200)-27.5; > > output = "Temp = "; > > str.putfloatf (output,temp1,1); > > str.putchar(output, 'C'); > > lcd.print(output, str.length(output)); > > lcd.clreol(); > > > > dieser temp 1 soll dann später mit der zahl aus dem eprom auf ==, <= ,>= Verglichen werden. > > > > ich habe die Zeilen nu in das modul eeprom ein gefügt aber es klappt immer noch nicht. > > ich wollte mit der folientastatur so die float zahl erzeugen und ins eprom schreiben. > > </i> > Das ist klar. Das Modul eeprom.c2 steht oberhalb von mem.c2. Somit > sind die Funktionen von mem.c2 noch nicht bekannt. > Entweder Du schreibst die beiden Funktionen in eines Deiner Projektmodule, oder > Du setzt eeprom.c2 unterhalb von mem.c2. (in Lib/modules.txt) > > <i>> s=""; //s Soll die floatzahl werden > > wait keyb2.keywert <=3; > > str.putfloatf(s,keyb2.keywert,0); > > lcdext.goto(3,2); > > lcdext.print(s); > > keyb2.keywert=255; > > sleep 250; > > wait keyb2.keywert <=9; > > str.putfloatf(s,keyb2.keywert,0); > > lcdext.goto(3,2); > > lcdext.print(s); > > keyb2.keywert=255; > > sleep 250; > > wait keyb2.keywert <=9; > > s=s+'.'; > > str.putfloatf(s,keyb2.keywert,0); > > lcdext.goto(3,2); > > lcdext.print(s); > > keyb2.keywert=255; > > sleep 250; > > wait keyb2.keywert ==100; > > eeprom.writestr(0,256,s); // hir solltedas float ins eeprom geschrieben werden > > sleep 100; > > } > > ich habe das eeprom 24c65 > > 256??? Eprom schon voll?</i> > Nein. Das 24C65/64 hat 8192 Byte. ( 0 bis 8191) > > <i>> im augenblich steht hir alles als string variabele.kannst du mir da vieleicht nochmal weiter helfen und mir noch mal nen tip geben wie das nen float werden kann? > > </i> > > Übrigens: Versuche bitte ein bißchen auf Deine Rechtschreibung zu achten. > Ich habe nicht umsonst eine Vorschau im Forum: > z.B: hier anstatt "hir" > oder Variable anstatt "variabele" > > MfG André H.