Problem mit ser. Monitor in for-Schleife

#7620460
Lesenswert?

Hänge an einer for Schleife, in der die USER-ID und Adressen zweier DS18B20 ausgegeben werden sollen.

Code: void setup(void) { Serial.begin(115200); DS18B20.begin(); Numbers_Of_18B20 = DS18B20.getDeviceCount();
Serial.println("Anzahl Sensoren:\t" + String(Numbers_Of_18B20)); if (Numbers_Of_18B20 >0){ //Hole Adressen und Userbytes for (int i=0; i < Numbers_Of_18B20; i++) { //Numbers_Of_18B20 DS18B20_Address[8]=DS18B20.getAddress(DS18B20_Address, 1);
Serial.print("\n\rSensor " + String(i+1)); Serial.print(":\t"); print_8bit_Array(DS18B20_Address); // i. Adresse Serial.print("\tSensorID:\t" + String(DS18B20.getUserData(DS18B20_Address))); // i. ID

/* DS18B20_Address[8]=DS18B20.getAddress(DS18B20_Address, i); // hole Adresse 1. Sensor am Anfang Serial.print("\n\rSensor " + String(1+1)); Serial.print(":\t"); print_8bit_Array(DS18B20_Address); // 2. Adresse Serial.print("\tSensorID:\t" + String(DS18B20.getUserData(DS18B20_Address)));*/
}
} } Der serielle Monitor gibt immer nur 1. Adresse aus. Nehme ich den globalen kommentar heraus und eliminiere die for-SChleife wirden alle Adressen angezeigt. Ersetze ich den Schleifencode durch println(i) ist alles ok. Nun habe ich keine IDEE mehr. Vllt einer von euch?

Sollen 2 Frühbeetheizungen gesteuert werden. Damit meine Frau die Sensoren im Bedarfsfall selbst wechseln, sollen sie als Sensor 1/2 angesprochen werden.

Danke und schönen Sonntag noch. Die main im Anhang Nachtrag: 1 main hat fehler in schleife steht 1 statt i, Deshalb main nochmal. Setze ich i von hand (i=1) wird 2. Sensor angezeigt, i=2 for wird nicht ausgeführt.

Angehängte Dateien:
#7621182
Lesenswert?

Andreas S. schrieb:

[Kasernenhofton]

Gute Güte. Und höchstwahrscheinlich hält der Autor diesen Beitrag für absolut konstruktiv und hilfreich ...

Michael schrieb:

und warum und wenn, welche Alternative?

DallasTemperature::getAddress ist so definiert:

1
bool getAddress(uint8_t*, uint8_t)

Der Rückgabewert gibt an, ob die Adresse erfolgreich gefunden wurde. Du speichert diesen Rückgabewert in DS18B20_Address[8], also an Stelle 9 in deinem 8-stelligen Array -> Oops.

LG, Sebastian

#7621254
Lesenswert?

Sebastian W. schrieb:

Andreas S. schrieb:

DallasTemperature::getAddress ist so definiert:

1
> bool getAddress(uint8_t*, uint8_t)
2
>

Der Rückgabewert gibt an, ob die Adresse erfolgreich gefunden wurde. Du speichert diesen Rückgabewert in DS18B20_Address[8], also an Stelle 9 in deinem 8-stelligen Array -> Oops.

thx. guck ich mir morgen an. muss gleich meine familie anfangen zu verköstigen (verfressende Bande).

schönen Abend M.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren