ds1820 mehrere DeviceAdressen in Array packen

Hallo, ich möchte mehrere DeviceAdressen von verschiedenen ds1820 Sensoren in einem Array deklarieren und in der loop Schleife geziehlt einzelne ansprechen und auslesen.

Jetzt habe ich es so

DeviceAddress sensorAdress[3] = {
'0x10, 0x16, 0x2E, 0x57, 0x02, 0x08, 0x00, 0x2F',
'0x10, 0x11, 0x40, 0xC0, 0x01, 0x08, 0x00, 0x9A',
'0x28, 0xE3, 0xAE, 0xBE, 0x03, 0x00, 0x00, 0x9F'
};

Wenn ich jetzt mit Serial.println(getTemperature(sensorAdress[1])); versuche die temperatur des Sensors auszulesen dann gibt er mit immer nur 1095.94 aus.

Gebe ich für jede DeviceAdresse eine eigene variable an DeviceAddress sensor1 = { 0x10, 0x16, 0x2E, 0x57, 0x02, 0x08, 0x00, 0x2F }; dann kann ich die Temperatur ohne Probleme auslesen.

Kann mir also jemand sagen wie ich die DeviceAdressen richtig in das Array packe und darauf zugreifen kann?

Vielen Dank

dein Array wäre 24 Bytes groß und jede adresse besteht aus 8 Bytes .

Also Adresse 1 wäre nicht sensorAdress[1]

sondern sensorAdress[0] sensorAdress[1]sensorAdress[2]sensorAdress[3]sensorAdress[4]sensorAdress[5]sensorAdress[6]sensorAdress[7]

Die Adressen sind richtig im Array eingetragen. Aber der Aufruf ist nicht so einfach wie du es dir denkst. Allerdings muss ich leider zu geben das du für den Aufruf an sich jemanden anderes fragen musst. ich schaffe das auf die schnelle auch nicht.... :(

Gruß derRobert

Du brauchst ein zweidimensionales Array das n x 8 groß ist:

 DeviceAddress sensorAdress[][] = {
{0x10, 0x16, 0x2E, 0x57, 0x02, 0x08, 0x00, 0x2F},
{0x10, 0x11, 0x40, 0xC0, 0x01, 0x08, 0x00, 0x9A},
{0x28, 0xE3, 0xAE, 0xBE, 0x03, 0x00, 0x00, 0x9F}
};

Ich bin mir nicht sicher wie deine Library arbeitet aber die Ansprache müsste dann so gehen:

Serial.println(getTemperature(sensorAdress[0]));  // Sensor 1

Ich habe es so gemacht:

byte sensor[][8] ={ {0,0,0,0,0,0,0,0} , 
{0x10, 0x16, 0x2E, 0x57, 0x02, 0x08, 0x00, 0x2F},
//weitere Sensoren
};

...

Sensornummer=1;
addr[0]=sensor[Sensornummer][0];
addr[1]=sensor[Sensornummer][1];
addr[2]=sensor[Sensornummer][2];
addr[3]=sensor[Sensornummer][3];
addr[4]=sensor[Sensornummer][4];
addr[5]=sensor[Sensornummer][5];
addr[6]=sensor[Sensornummer][6];
addr[7]=sensor[Sensornummer][7];

ds.select(addr);

Das funktioniert, aber kann man das direkter auslesen ohne die 8 Adressteile umzukopieren ?

hast du es denn mal versucht in indem du das array übergibtst

ds.select(Sensor[1]);

oder

ds.select(Sensor[1][]);

irgendwie so müsste es funktionieren. guck was der compiler sagt.

byte sensor[][8] ={ {0,0,0,0,0,0,0,0} , 
{0x10, 0x16, 0x2E, 0x57, 0x02, 0x08, 0x00, 0x2F},
//weitere Sensoren
};

Warum machst du die Nullen darein? damit du nicht bei 0 anfangen musst zu zählen?