Pages: [1]   Go Down
Author Topic: ds1820 mehrere DeviceAdressen in Array packen  (Read 623 times)
0 Members and 1 Guest are viewing this topic.
Munich
Offline Offline
Newbie
*
Karma: 0
Posts: 37
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Code:
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
Code:
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
Code:
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
Logged

0
Offline Offline
Jr. Member
**
Karma: 1
Posts: 96
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.... smiley-sad

Gruß derRobert
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 82
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Du brauchst ein zweidimensionales Array das n x 8 groß ist:
Code:
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:

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

Offline Offline
Newbie
*
Karma: 0
Posts: 29
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich habe es so gemacht:

Code:
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 ?
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 82
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

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

oder

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

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

Code:
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?
Logged

Pages: [1]   Go Up
Jump to: