Mehrere OneWire DS18B20-verwenden ?

Hallo,
die DS18B20 nutzen ja den sogenannten OneWire-Bus.
Hilft mir das jetzt in irgendeiner Form wenn ich mehrere davon am gleichen Arduino betreiben will ?

Aktuell lese ich den einen den ich angeschlossen hab so aus:

// DS18S20 Temperaturchip i/o
#define ONE_WIRE_BUS 5
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
Temperature_DS18B20 = sensors.getTempCByIndex(0);

Kann ich baugleiche Sensoren auf den gleichen Bus hängen und my ByIndex(1,2,3,4,5,...) abrufen ?
Oder jeder Sensor an einen eigenen PIN und die gleichen Objekte wieder anlegen ?

lG
Gawan

Die Sensoren sind dafür gedacht dass sie alle an einer Leitung hängen. Das wird lediglich bei komplexen Bus-Topologien ein Problem.

Mit der Library kann man Sensoren entweder per Index oder Adresse ansprechen. Beim Index geht es nach der Reihenfolge am Bus. Man kann aber auch Sensoren mit ihrer jeweiligen Adresse ansprechen. Dann ist egal wie sie angeschlossen sind.

Besser ist allerdings du startest erst die Temperaturmessung mit requestTemperatures(). Damit machen alle Sensoren am Bus eine Messung. Und liest dann die einzelnen Sensoren mit getTempC() aus. Bei letzterer Funktion muss man die Adresse des jeweiligen Sensors übergeben.

Hallo,

nutzt du die Librarie von milesburton? Wenn nicht,
https://milesburton.com/Dallas_Temperature_Control_Library
die Bsp. kannste durchgehen, der Rest sollte klar werden, ansonsten nochmal fragen.

Wenn du genügend Pins hast und es nicht aus anderen Gründen einen Bus nehmen musst, ist es besser für jeden Sensor einen Pin. Weil dann weist du auch nach dem Austausch eines Sensors, dass es garantiert ohne Ändern des Sketches wieder geht.

P.S. Und lies den Sensor solange aus, bis er nicht mehr -127 oder 85 Grad misst. Blockierungsfreies Auslesen ist etwas tricky