Arduino – Adressen aller ds1820 ermitteln
Christoph Purin
Um gezielt die Temperaturwerte eines bestimmten am Arduino angeschlossenen ds18s20 Temperatursensors auslesen zu können, benötigt man dessen Geräte-Adresse.
Wie man diese eindeutige Adresse ermittelt zeige ich in diesem Beitrag.
#include
OneWire ow(2);
void setup(void) { Serial.begin(9600); lookUpSensors(); }
void lookUpSensors() { byte address[8]; int i=0; byte ok = 0, tmp = 0;
Serial.println("--Suche gestartet--"); while (ow.search(address)) { tmp = 0; //0x10 = DS18S20 if (address[0] == 0x10) { Serial.print("Device is a DS18S20 : "); tmp = 1; } else { //0x28 = DS18B20 if (address[0] == 0x28) { Serial.print("Device is a DS18B20 : "); tmp = 1; } } //display the address, if tmp is ok if (tmp == 1) { if (OneWire::crc8(address, 7) != address[7]) { Serial.println("but it doesn't have a valid CRC!"); } else { //all is ok, display it for (i=0;i<8;i++) { if (address[i] < 9) { Serial.print("0"); } Serial.print("0x"); Serial.print(address[i],HEX); if (i<7) { Serial.print(", "); } } Serial.println(""); ok = 1; } }//end if tmp }//end while if (ok == 0) { Serial.println("Keine Sensoren gefunden"); } Serial.println("--Suche beendet--"); }
void loop(void) { //do nothing :) }