Hallo zusammen
Ich möchte mehrere Temperaturen mit dem Sensor DS18B20 auslesen. Zuerst möchte ich in der Setup Routine prüfen ob die definierten Sensoren gefunden werden.
Sobald aber die Search Funktion ausgeführt wird, werden die im Code gespeicherten Adressen der Sensoren überschrieben mit anderen Adressen, aber nicht alle.
Ich habe in der Beilage mal einen Sketch beigelegt der aufs wesentlichste reduziert ist um den 'Fehler' zu reproduzieren. Es muss für die Ausführung des Sketches kein Sensor angeschlossen sein.
Die Adressen werden hier definiert:
DeviceAddress Sensor1_ADR = { 0x28, 0x81, 0x53, 0xD0, 0x04, 0x00, 0x00, 0x87 };
DeviceAddress Sensor2_ADR = { 0x28, 0xF1, 0x05, 0x5A, 0x05, 0x00, 0x00, 0x7F };
DeviceAddress Sensor3_ADR = { 0x28, 0xC8, 0xB8, 0xD0, 0x04, 0x00, 0x00, 0xCE };
Das ist der Search Code, nachdem die Adressen überschrieben werden:
if (!oneWire.search(Sensor1_ADR)) Serial.println("Can not find: Sensor1_ADR");
if (!oneWire.search(Sensor2_ADR)) Serial.println("Can not find: Sensor2_ADR");
if (!oneWire.search(Sensor3_ADR)) Serial.println("Can not find: Sensor3_ADR");
Das Ergebnis sieht so aus:
Es wird nur der 2. Sensor als nicht gefunden ausgegeben (wenn kein Sensor angeschlossen ist). Und nach der Ausgabe ist die 3. Sensoradresse die gleiche wie die 1. Adresse, aber eine dies gar nicht definiert wurde?
Ausgabe der Sensorenadressen 1-3
28 81 53 D0 04 00 00 87
28 F1 05 5A 05 00 00 7F
28 C8 B8 D0 04 00 00 CE
Prüfen ob Sensoren gefunden werden mit search:
Can not find: Sensor2_ADR
Ausgabe der Sensoradressen 1-3. Die 3. Adresse ist mit der 1. Adresse überschrieben
28 E7 65 B1 04 00 00 F1
28 F1 05 5A 05 00 00 7F
28 E7 65 B1 04 00 00 F1
ich verwende die aktuellste Dallas Library 3.7.7 und onWire 2.3.3. Der 'Fehler' gibts aber auch mit früheren Libraries. Ich verwende einen MEGA 2560, es passiert aber auch bei anderen Arduinos.
Hat jemand eine Idee warum das passiert und wie das 'korrigiert' werden kann? Ist was falsch im Code (Deklaration)? Ich bin leider kein C++ Profi.
Danke
2560_Test.ino (1.96 KB)