Problem mit ser. Monitor in for-Schleife

OP #7620460

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

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

OP #7621252

Sebastian W. schrieb:

Andreas S. schrieb:

[Kasernenhofton]

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

LG, Sebastian

Ich freue mich immer, wenn es Experten gibt. Erinnern mich sehr an manche Minister. Wahrscheinlich kann er es nicht in einen Satz (ohne Nebensatz) formulieren.

LG, M.

OP #7621254

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

Eine eigene Frage? Dieser Thread ist über 2 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.