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.
:
Bearbeitet durch User
> uint8_t DS18B20_Address[8]; >... > DS18B20_Address[8]=... ist schon mal ein Ritt ins Verderben. Den Rest habe ich mir nicht angeschaut. Oliver
Michael schrieb: > und warum und wenn, welche Alternative? Beschäftige Dich erst einmal mit den allereinfachsten Grundlagen von C/C++, bevor Du hier solch einen Schrottcode hinrotzt und selbst bei einem direkten Hinweis auf einen schweren Fehler völlig ahnungslos tust.
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
:
Bearbeitet durch User
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.
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.