Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

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
Ich nutze:
C-Control II Station, OSOPT V3.0

> 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)