DS18B20 Adresse auslesen

Hallo,

also ich hab 2 DS18B20 und würde die gerne zusammen anschliesen und die Adressen auslesen.
Kenne mich nicht so gut aus und habe einfach mal diesen Code ausprobiert wärend der Sensr angeschlossen war. Der Code ist von hier: Arduino Playground - OneWire-DE

Mein Problem: Die ausgabe ist immer "Keine weiteren Adressen!" allerdings wenn ich einen einzelnen Sensor auslesen will klappt das problemlos. (mit einem anderen code)

    #include <OneWire.h>
     
    // DS18S20 Temperaturchip i/o
    OneWire ds(1);  // an pin 1
     
    void setup(void) {
      // inputs/outputs initialisieren
      // seriellen port starten
      Serial.begin(9600);
    }
     
    void loop(void) {
      byte i;
      byte present = 0;
      byte data[12];
      byte addr[8];
     
      if ( !ds.search(addr)) {
          Serial.print("Keine weiteren Addressen.\n");
          ds.reset_search();
          return;
      }
     
      Serial.print("R=");
      for( i = 0; i < 8; i++) {
        Serial.print(addr[i], HEX);
        Serial.print(" ");
      }
     
      if ( OneWire::crc8( addr, 7) != addr[7]) {
          Serial.print("CRC nicht gültig!\n");
          return;
      }
     
      if ( addr[0] == 0x10) {
          Serial.print("Gerät ist aus der DS18S20 Familie.\n");
      }
      else if ( addr[0] == 0x28) {
          Serial.print("Gerät ist aus der DS18B20 Familie.\n");
      }
      else {
          Serial.print("Gerätefamilie nicht erkannt : 0x");
          Serial.println(addr[0],HEX);
          return;
      }
     
      ds.reset();
      ds.select(addr);
      ds.write(0x44,1);         // start Konvertierung, mit power-on am Ende
     
      delay(1000);     // 750ms sollten ausreichen
      // man sollte ein ds.depower() hier machen, aber ein reset tut das auch
     
      present = ds.reset();
      ds.select(addr);    
      ds.write(0xBE);         // Wert lesen
     
      Serial.print("P=");
      Serial.print(present,HEX);
      Serial.print(" ");
      for ( i = 0; i < 9; i++) {           // 9 bytes
        data[i] = ds.read();
        Serial.print(data[i], HEX);
        Serial.print(" ");
      }
      Serial.print(" CRC=");
      Serial.print( OneWire::crc8( data, 8), HEX);
      Serial.println();
    }

Könnt ihr mir helfen? Danke schon mal!!

Gruß, Bernd

Wenn man sich ein klein wenig Mühe macht findet man z.B. das hier:

// This sketch looks for 1-wire devices and
// prints their addresses (serial number) to
// the UART, in a format that is useful in Arduino sketches
// Tutorial: 
// http://www.hacktronics.com/Tutorials/arduino-1-wire-address-finder.html

#include <OneWire.h>

OneWire  ds(2);  // Connect your 1-wire device to pin 3

void setup(void) {
  Serial.begin(9600);
  discoverOneWireDevices();
}

void discoverOneWireDevices(void) {
  byte i;
  byte present = 0;
  byte data[12];
  byte addr[8];
  
  Serial.print("Looking for 1-Wire devices...\n\r");
  while(ds.search(addr)) {
    Serial.print("\n\rFound \'1-Wire\' device with address:\n\r");
    for( i = 0; i < 8; i++) {
      Serial.print("0x");
      if (addr[i] < 16) {
        Serial.print('0');
      }
      Serial.print(addr[i], HEX);
      if (i < 7) {
        Serial.print(", ");
      }
    }
    if ( OneWire::crc8( addr, 7) != addr[7]) {
        Serial.print("CRC is not valid!\n");
        return;
    }
  }
  Serial.print("\n\r\n\rThat's it.\r\n");
  ds.reset_search();
  return;
}

void loop(void) {
  // nothing to see here
}

Vielen dank für deine Mühe.
Habe in dem Sketch folgende Zeile an meine Pinbelegung angepasst.

OneWire  ds(1);  // Connect your 1-wire device to pin 3

Leider hat der Serial Monitor nur folgendes Ergebnis geliefert:

Looking for 1-Wire devices...
That's it.

Habe im laufe des heutigen Tages im Internet auch noch ein paar andere sketches gefunden welche die Adresse suchen aber leider kam bei allen ein ähnlich informatives Ergebniss wie oben.

Habe ich irgend ein denkfehler? Ich habe zum Testen nur ein Sensor angeschlossen und den data Kontakt mit dem vcc mit 4,7 kΩ verbunden. Die Temperatur auslesen klappt einzeln auch wunderbar.
:slightly_frowning_face:
Danke schon mal
Gruß Bernd

Hoffentlich sind 4,7 kΩ ...

Klaus_ww:
Hoffentlich sind 4,7 kΩ ...

Ups ja natürlich danke :slight_smile:

Hat sonst vllt noch wer eine Idee wo mein Fehler sein könnte??

Weiß keiner was? :slightly_frowning_face:

Nimm halt mal nen anderen Pin.
Wenn's die Software nicht ist dann muss es ja die Hardware sein.

Oder was anderes :grin:

Du kannst auch die Software aufrüsten:

https://milesburton.com/Dallas_Temperature_Control_Library

Mal den "Tester" Sketch bei den Beispielen laufen lassen

Pin 1 wird bereits von der seriellen Schnittstelle benutzt.

Somit wird es wohl daran liegen

ElEspanol:
Pin 1 wird bereits von der seriellen Schnittstelle benutzt.

Somit wird es wohl daran liegen

DANKE!!! :slight_smile: Daran lag es. Funktioniert jetzt wunderbar!

Dankende Grüße,
Bernd

Sag ich doch: nimm nen anderen Pin :smiley:

Schön, wenn's jetzt geht.