Hallo zusammen,
ich möchte gerne 2 DS18S20 (später evtl. auch mehr) einzeln auslesen.
Vom PC, bzw. vom Raspberry Pi soll ein Befehl an den Arduino gesendet
werden. In meinem Fall "OW01" für den Sensor 1 und "OW02" für den Sensor
2. Der Sensor der "angesprochen" wird soll dann ausgelesen werden und
den Wert über die Serielle Schnittstelle zurücksenden.
Folgendes Problem bei meinem Sketch. Wenn ich "OW01" sende wird mir ein
Temperaturwert zurück ausgegeben, aber zusätzlich noch meine Ausgabe
"ERROR".
Bei "OW02" bekomme ich nur den gleichen Temperaturwert zurück gegeben
wie bei OW01. Aber kein "ERROR"
1
#include <OneWire.h>
2
#include <DallasTemperature.h>
3
4
OneWire ds(2);
5
6
// Device Adressen der einzelnen Temperatursensoren angeben
//put in temp all the 8 bits of LSB (least significant byte)
115
tr = data[0];
116
117
//check for negative temperature
118
if (data[1] > 0x80)
119
{
120
tr = !tr + 1; //two's complement adjustment
121
tr = tr * -1; //flip value negative.
122
}
123
124
//COUNT PER Celsius degree (10h)
125
int cpc = data[7];
126
//COUNT REMAIN (0Ch)
127
int cr = data[6];
128
129
//drop bit 0
130
tr = tr >> 1;
131
132
return tr - (float)0.25 + (cpc - cr)/(float)cpc;
133
}
Eigentlich ist es unmöglich das sie Sensoren den gleichen Wert haben.
Der eine Sensor ist ein Außensensor und liefert den Temperaturwert den
bei beiden angezeigt wird. Und der andere ist drinnen. Temperatur
Unterschied sollte also ca. 20 Grad sein.
Würde mich sehr über eure Hilfe freuen.
Gruß Florian
Hallo,
ich weiß es ist nicht gerade die beste Möglichkeit, aber die einzelnen
Probleme hatte ich ja gelöst. Und da das in eine komplett andere
Richtung geht und eben die speziellen Sensoren (siehe Titel) betrifft,
dachte ich ich mach nen neuen auf um evtl. auch jemand zu finden der mir
dabei behilflich sein kann. Tut mir echt leid...
Zu dem Problem: Also das mit der ERROR Ausgabe ist weg, allerdings wir
nun immer noch egal ob ich OW01 oder OW02 sende der gleiche Wert
ausgelesen.
Komischer Weise zeigt es mir immer nur mit dem sketch -1,25 Grad an.
Aber immer ganz genau -1,25. Wenn ich den gleichen Sensor mit einem
anderen Sketch alle 20 sek auslese, dann schwangt der Wert bei -2 Grad,
aber ist fast nie 100%tig gleich...
Florian D. schrieb:> ich möchte gerne 2 DS18S20 (später evtl. auch mehr) einzeln auslesen.> Vom PC, bzw. vom Raspberry Pi soll ein Befehl an den Arduino gesendet> werden. In meinem Fall "OW01" für den Sensor 1 und "OW02" für den Sensor> 2. Der Sensor der "angesprochen" wird soll dann ausgelesen werden und> den Wert über die Serielle Schnittstelle zurücksenden.
Weil mich das auch interessiert hat, habe ich es, so gelöst.
Gruß
Hallo,
danke, bezüglich der Adressen: Nein sind sie wahrscheinlich nicht, die
habe ich aus einem Beispielcode vorläufig übernommen und wollte sie noch
ändern, habe aber noch nicht herausgefunden wie das geht
Florian
Hallo,
Wenn der sketch nicht funktioniert?!,
hast wahrscheinlich falsch angeschlossen oder die Software noch nicht
richtig installiert.
Folge den link. Gutes Gelingen.
Gruß
Hallo, danke hat nun alles funktioniert, die Werte werden nur jetzt
solange ausgegeben bis ich einen anderen Befehl sende. Ich habe leider
nicht verstanden wieso das so ist. Bei meinem alten Script habe ich es
so gemacht das eben der Wert nur einmal ausgegeben wird.
Gruß Florian
Florian D. schrieb:> Ich habe leider> nicht verstanden wieso das so ist.
Wiel Du nur kopierst, ohne es zu verstehen.
Lerne erst einmal, eine LED zum Blinken zu bekommen, ohne von anderen zu
kopieren.
Das ist mir ja alles klar und kann ich auch. Ich meinte nur weil ich
keinerlei von Verzögerung/Pause oder sonst was finde, die nicht
auskommentiert ist. In dem Code ganz am Anfang des Beitrags gebe ich den
Wert sofort aus.
Hallo,
ich dachte es könnte an den evtl. Fehlenden Klammer im void liegen. Aber
wenn ich die Klammer setzte nach if... und am Ende und es auf den
Arduino hochlade bekomme ich gar keine Werte nach einem Befehl zurück.
Über einen Tipp würde ich mich sehr freuen.
Gruß Florian
Florian D. schrieb:> solange ausgegeben bis ich einen anderen Befehl sende.Florian D. schrieb:> keinerlei von Verzögerung/Pause oder sonst was finde,
der delay() ist ein Schimpfwort, daher meide es!
Florian D. schrieb:> Über einen Tipp würde ich mich sehr freuen.
Für „OW01“ habe ich es gemacht, aber für „OW02“ mach es bitte Selber.