DS18B20 auf 11 bit Auflösung stellen

Hey, ich würde gerne meinen DS18B20 auf 11 Bit stellen. Leider klappt das nicht so ganz und der Sensor überträgt weiterhin mit 9 Bit, sprich einem Temperaturunterschied von 0,5°C.

#include <DallasTemperature.h>
#include <OneWire.h>
#include <LiquidCrystal.h>


// initialize the library with the numbers of the interface pins
LiquidCrystal lcd1(30, 32, 22, 24, 26, 28); //RS, E1, DB4, DB5, DB6, DB7
LiquidCrystal lcd2(30, 34, 22, 24, 26, 28); //RS, E2, DB4, DB5, DB6, DB7 



 //Temperatursensor

#define PinDS18B20 5   /* Pin5 für DS18B20 definieren*/
OneWire ourWire(PinDS18B20); /* OneWire Referenz setzten*/
DallasTemperature DS18B20(&ourWire);/* Dallas Temperature Library für Nutzung der oneWire Library vorbereiten*/
float Temperatur;

void setup() 
{ 
  Serial.begin(9600);
  lcd1.begin(40, 2);
  lcd2.begin(40, 2);
  DS18B20.begin();/* Inizialisieren der Dallas Temperature library */
  DS18B20.setResolution(11); /* Genauigkeit auf 11-Bit setzen*/
  delay(2000); /* 2 sekunden warten*/
}
  
void loop()
{

//___________________________Thermometer____________________________

DS18B20.requestTemperatures(); /* Temperatursensor auslesen */
Temperatur=DS18B20.getTempCByIndex(0);
  
  //___________________LCD Anzeige__________________________


  lcd2.setCursor(0,0); //Spalte 0, Zeile 3 auf dem Display
  lcd2.print("Temperatur:");
  lcd2.setCursor(11,0);
  lcd2.print(Temperatur,1);
  lcd2.print("\337C");
  
}

Hallo, doch die Daten werden mit 11-bit ausgelesen, deine Ausgabe ist falsch.

https://www.arduino.cc/en/Reference/LiquidCrystalPrint

Lass dir über "serial.print" die Daten zur Kontrolle auf einem Terminal ausgeben. Auch solltest du die lcd-Ausgabe und das auslesen der Sensoren am besten in Funktionen auslagern und nur zyklisch abfragen/ausgeben.

Grüße

In der Anweisung "setResolution(adresse, 11)" fehlt bei dir meines Erachtens die Deviceaddress.

Edit: Bei mir sieht das so aus.

  sensors.getAddress(sensor1, 0);
  sensors.setResolution(sensor1, 11);

Steht auch alles in den Beispielen.

Danke schon mal für die Hilfe. Werde gleich morgen gucken, ob es funktioniert. :)

Baschti_96: Danke schon mal für die Hilfe. Werde gleich morgen gucken, ob es funktioniert. :)

Und sieh dir die Beispiele der Library an, da kannst du vieles entnehmen.

HotSystems: In der Anweisung "setResolution(adresse, 11)" fehlt bei dir meines Erachtens die Deviceaddress.

Das geht so oder so. Ohne Adresse werden alle Sensoren geändert.

Der Fehler ist wie gesagt in der Ausgabe. ,1 bedeutet eine Nachkommastelle

Serenifly: Das geht so oder so. Ohne Adresse werden alle Sensoren geändert.

Der Fehler ist wie gesagt in der Ausgabe. ,1 bedeutet eine Nachkommastelle

Ah, ok. Habe das ohne Adresse noch nie getestet.

Danke, ist auch für mich neu.

Moin, Mit Adresse funktioniert es jetzt.

Ich hab keine Ahnung warum mir mein LCD vorher 0,5 Temperaturschritte angezeigt hat. Die 1 Nachkommastelle ist richtig, nur wollte ich diese auch nutzen und nicht nur ,5 und ,0 angezeigt bekommen.

Naja, jetzt funktioniert es. Besten Dank für die Hilfe und die Beispiel information :)

Baschti_96: Moin, Mit Adresse funktioniert es jetzt.

Ich hab keine Ahnung warum mir mein LCD vorher 0,5 Temperaturschritte angezeigt hat. Die 1 Nachkommastelle ist richtig, nur wollte ich diese auch nutzen und nicht nur ,5 und ,0 angezeigt bekommen.

Naja, jetzt funktioniert es. Besten Dank für die Hilfe und die Beispiel information :)

Hallo,

das ist doch mal eine gute Nachricht.

Poste doch bitte deinen jetzigen Sketch, dann haben andere auch was davon.

danke für die Rückmeldung.