Re: ds1631z: ds1631.readi2(i): falscher Wert Kategorie: I²C-Bus (von GeorgEichhorn - 17.02.2009 0:00) | ||
Als Antwort auf Re: ds1631z: ds1631.readi2(i): falscher Wert von chrisk - 9.02.2009 23:32 | ||
| ||
> hat vielleicht jemand ein beispiel, wie er die sensoren initialisiert und wo das auch funktioniert? Hallo Christian, ich kann aus Zeitgründen leider erst jetzt antworten. Angehängt habe ich ein Beispiel, das bei mir mit der Station ohne Probleme funktioniert. Ich habe es aus einem umfangreichen Programm zusammengestrichen und hoffe, dass es auch bei Dir klappt. Es werden die Temperaturen von 5 Sensoren eingelesen und im Display angezeigt. Bitte entschuldige, dass ich es nicht kommentiert habe. Leider sehe ich in der Vorschau trotz entsprechender Eingabe meine Formatierung nicht. Ich hoffe, es geht auch so. Viel Erfolg, Georg float mittelwert, maximum, minimum; function temperatur_einlesen (int i)returns float { float temperatur; lcdext.line(1); lcdext.print("Sensor: "); lcdext.zahl2(i); lcdext.line(2); temperatur=ds1631.readi2(i); lcdext.zahl5n2(temperatur); mittelwert=mittelwert+temperatur; lcdext.put(223); lcdext.put('C'); ds1631.init(i); return temperatur; } function init_all () { byte i; lcdext.init(); i2c.init(); mittelwert=0.0; minimum=9999; for i = 0 ... 15 { ds1631.Reset(i); ds1631.init(i); } sleep 1000; } thread messen { byte i; float temperatur; run 256; mittelwert=0.0; for i = 1 ... 5 { lcdext.init(); temperatur=temperatur_einlesen(i); if temperatur < minimum {minimum = temperatur;} if maximum < temperatur {maximum = temperatur;} sleep 1000; } mittelwert=mittelwert/5; if maximum > 30*100 {stports.setLED(1,1);} lcdext.clear(); lcdext.line(1); lcdext.print("Mittelwert: "); lcdext.line(2); lcdext.zahl5n2(mittelwert); lcdext.put(223); lcdext.put('C'); sleep 1000; lcdext.clear(); lcdext.line(1); lcdext.print("Minimum: "); lcdext.line(2); lcdext.zahl5n2(minimum); lcdext.put(223); lcdext.put('C'); sleep 1000; lcdext.clear(); lcdext.line(1); lcdext.print("Maximum: "); lcdext.line(2); lcdext.zahl5n2(maximum); lcdext.put(223); lcdext.put('C'); sleep 1000; sleep 1000; } thread main { init_all(); loop { run messen; } } | ||
Antwort schreiben Antworten: Re: ds1631z: ds1631.readi2(i): falscher Wert (von chrisk - 21.02.2009 17:40) Re: ds1631z: ds1631.readi2(i): falscher Wert (von GeorgEichhorn - 26.02.2009 20:53) |