Arduino – Adressen aller ds1820 ermitteln

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.
ds18s20

 

 

 

Download Sketch

 

 

 

#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 🙂
}