Vorstellung & laser:56:11: error: 'class DS18B20' has no member named 'begin'

Hallo Zusammen!
Mein Name ist Stephan, bin 48Jahre alt und komme aus Bremerhaven .
Ich habe aus dem 3D Drucker Bereich ein ganz klein wenig Erfahrungen , wenn es um flashen von Firmware ging und bis jetzt auch noch keine großen Probleme gehabt!
Bis jetzt! :slight_smile:
Ich habe einen Co2 Laser und wollte den Wasserdurchlauf und die Temparatur des Wassers mit hilfe eines Arduino Nano überwachen.
Wenn ich jetzt die ino datei compilieren möchte bekomme ich eine Fehlermeldung und kann damit leider nichts anfangen!

Ich habe die 3 Bibliotheken
-Adafruit-ST7735-Library-master.zip
-Arduino-Temperature-Control-Library-master.zip
-Adafruit-GFX-Library-master.zip
eingebunden!

D:\Arduino\CO2 Laser Ueberwachung\laser\laser.ino: In function 'void setup()':

laser:56:11: error: 'class DS18B20' has no member named 'begin'

sensors.begin();

^

laser:57:11: error: 'class DS18B20' has no member named 'request'

sensors.request();

^

D:\Arduino\CO2 Laser Ueberwachung\laser\laser.ino: In function 'void loop()':

laser:132:15: error: 'class DS18B20' has no member named 'available'

if (sensors.available())

^

laser:135:29: error: 'class DS18B20' has no member named 'readTemperature'

temperaturein = sensors.readTemperature(FA(sensorsAddress[0]));

^

laser:135:65: error: 'FA' was not declared in this scope

temperaturein = sensors.readTemperature(FA(sensorsAddress[0]));

^

laser:136:30: error: 'class DS18B20' has no member named 'readTemperature'

temperatureout = sensors.readTemperature(FA(sensorsAddress[1]));

^

laser:138:9: error: 'class DS18B20' has no member named 'request'

sensors.request();

^

Mehrere Bibliotheken wurden für "OneWire.h" gefunden
Benutzt: C:\Users\diabolo\Documents\Arduino\libraries\OneWire
Nicht benutzt: C:\Users\diabolo\Documents\Arduino\libraries\OneWire-master
Bibliothek Adafruit-GFX-Library-master in Version 1.1.5 im Ordner: C:\Users\diabolo\Documents\Arduino\libraries\Adafruit-GFX-Library-master wird verwendet
Bibliothek Adafruit-ST7735-Library-master in Version 1.0.4 im Ordner: C:\Users\diabolo\Documents\Arduino\libraries\Adafruit-ST7735-Library-master wird verwendet
Bibliothek SPI in Version 1.0 im Ordner: D:\Dowmloads\arduino-1.8.9-windows\arduino-1.8.9\hardware\arduino\avr\libraries\SPI wird verwendet
Bibliothek OneWire in Version 2.3.4 im Ordner: C:\Users\diabolo\Documents\Arduino\libraries\OneWire wird verwendet
Bibliothek DS18B20 in Version 1.0.0 im Ordner: C:\Users\diabolo\Documents\Arduino\libraries\DS18B20 wird verwendet
exit status 1
'class DS18B20' has no member named 'begin'

Hier die Zeilen aus der ino Datei

#include <Adafruit_GFX.h>    //Display
#include <Adafruit_ST7735.h> //Display
#include <SPI.h> //Display
#include <OneWire.h>
#include <DS18B20.h>

#define TFT_CS     10 //Display
#define TFT_RST    8  //Display
#define TFT_DC     9 //Display
#define TFT_SCLK 13   //Display
#define TFT_MOSI 11   //Display

Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS,  TFT_DC, TFT_RST); //Display



const byte ONEWIRE_PIN = 3;
const byte SENSORS_NUM = 2;
const byte sensorsAddress[SENSORS_NUM][8] PROGMEM =
{
 0x28,0xFF, 0xC0, 0xAD, 0x86, 0x16, 0x5, 0x94,
 0x28, 0xFF, 0x68, 0x5D, 0x85, 0x16, 0x3, 0xD1
};
float temperaturein;
float temperatureout;
volatile int  flow_frequency;  // Measures flow meter pulses
unsigned int  l_hour; // Calculated litres/hour
unsigned char flowmeter = 2;  // Flow Meter Pin number
unsigned long currentTime;
unsigned long cloopTime;
unsigned long Wartezeit = 800;
unsigned long previousMillis = 0;
unsigned long Wartezeitrelai = 10000;
unsigned long previousMillis1 = 0;
int relaipin = 5;
bool relaiwartezeitmerker = false;


void flow ()
{
 flow_frequency++;
}

OneWire onewire(ONEWIRE_PIN);
DS18B20 sensors(&onewire);

void setup(void)
{
 while(!Serial);
 Serial.begin(9600);
 tft.initR(INITR_BLACKTAB);   //Display
 tft.setRotation(1);
 uint16_t time = millis(); //Display
 tft.fillScreen(ST7735_BLACK); //Display
 time = millis() - time; //Display
 sensors.begin();
 sensors.request();
 pinMode(flowmeter, INPUT);
 attachInterrupt(0, flow, RISING);
 sei();
 currentTime = millis();
 cloopTime = currentTime;
 pinMode(relaipin, OUTPUT);
}

Kann mir jemand sagen, warum es scheitet?
Vielen Dank
Gruß
Stephan

Hallo Stephan, willkommen im Forum.

#include <DS18B20.h>
...
DS18B20 sensors(&onewire);
...
sensors.begin();

Du bindest eine Bibliothek ein, die Du mit der Methode begin ansprichst. Die Fehlermeldung besagt, daß die von Dir verwendete Bibliothek diese Methode aber nicht kennt. Daher passen Programm und Bibliothek nicht zueinander.

Es gibt unterschiedliche Bibliotheken gleichen Namens, welche Bibliothek nutzt Du? Was steht da in den Beispielen?

Du hast Bibliotheken gleichen Namens im Bibliotheksordner, bitte lösche diese oder verschiebe sie an eine für die IDE "unsichtbare" Stelle.

Hallo, vielen Dank für die schnelle Antwort.
Ich habe folgende Bibliotheken installiert die bei dem Code damals angegührt wurden!

-Adafruit-ST7735-Library-master.zip
-Arduino-Temperature-Control-Library-master.zip
-Adafruit-GFX-Library-master.zip

Weil es aber nicht klappte, habe ich noch andere Bibliotheken installiert die ähnlich klangen! Wie bekomme ich raus ob eine Bibliothek die Befehl "begin " kennt?
Gruß
Stephan

Traube:
Wie bekomme ich raus ob eine Bibliothek die Befehl "begin " kennt?

Einfach in der Library selbst nachsehen.

Wie bekomme ich raus ob eine Bibliothek die Befehl "begin " kennt?

indem Du in den Beispielen der Bibliothek nachschaust.

So, mir ist aufgefallen, das ich 4 Bibliotheken für DS18B20 habe

  1. DS18B20/Single.ino at master · matmunk/DS18B20 · GitHub
  2. GitHub - milesburton/Arduino-Temperature-Control-Library: Arduino Temperature Library
  3. GitHub - IharYakimush/arduino-temperature-control-events: Arduino thermometer with onChange event based on DS18B20 sensor
  4. GitHub - orgua/OneWireHub: OneWire slave device emulator

In allen steht in Samples immer nur serial.begin drin, aber nie sensor.begin

Wie deinstalliere ich diese Libs, denn ich habe einen Ordner, der anscheinend die richtige Bibliothek enthält,. aber es ist nur ein Ordner rund keine Zip Datei.
Wie geht es jetzt weiter?

Gruß
Stephan

Ich habe hier mal den Ornder gezippt und hochgeladen!Das müsste doch die richtige Bibliothek sein, oder? Wie genaui binde ich sie ein damit das Sketch diese findet?

DS18B20.ZIP (10.2 KB)

Du kannst die entsprechenden Dateien inkl. Ordner komplett verschieben. Nimm einen Ordner außerhalb der IDE.
Die richtige Library kannst du dann mit dem Ordner in den Hauptordner "Libraries" kopieren.

HotSystems:
Du kannst die entsprechenden Dateien inkl. Ordner komplett verschieben. Nimm einen Ordner außerhalb der IDE.
Die richtige Library kannst du dann mit dem Ordner in den Hauptordner "Libraries" kopieren.

Also den kompletten Ordner DS18B20 in das "Libraries" von Arduino kopieren?
Das habe ich schon getan und dann mittels "#include <DS18B20.h>" in der ino-Datei eingebunden.
Leider ohne Erfolg! Oder habe ich da etwas falsch verstanden?

Warum ist die Schrift SPI.h, OneWire.h und DS19B20 in der Ino Datei rot geschrieben und die anderen beiden sind aber schwarz?
Da stimmt doch schon etwas nicht oder?

#include <Adafruit_GFX.h> //Display
#include <Adafruit_ST7735.h> //Display
#include <SPI.h> //Display
#include <OneWire.h>
#include <DS18B20.h>

So ist es schon ok.
Zeig mal ein Screenshot von dem Ordner inkl. Inhalt.

Warum ist die Schrift SPI.h, OneWire.h und DS19B20 in der Ino Datei rot geschrieben und die anderen beiden sind aber schwarz?

Das ist recht irrelevant.

Die Farbgebung findet sich in einer theme.txt Datei.

Die Hervorhebungen werden über keywords.txt Dateien gesteuert.
Diese kannst du nach belieben selber erzeugen und manipulieren.

Hat alles keinen Einfluss auf die Funktionalität.

combie:
Das ist recht irrelevant.

Die Farbgebung findet sich in einer theme.txt Datei.

Die Hervorhebungen werden über keywords.txt Dateien gesteuert.
Diese kannst du nach belieben selber erzeugen und manipulieren.

Hat alles keinen Einfluss auf die Funktionalität.

Ok, Danke für die Erklärung!
HJier der Screenshot

Traube:
Ok, Danke für die Erklärung!
HJier der Screenshot

Das sieht gut aus und sollte funktionieren, wenn es die richtige Lib ist.

;D tja, anscheionend wohl nicht! Abver wie bekomme es es raus, was die richtige Lib ist?

Ich habe sie ja oben schon einmal gepostet! In den Samples steht ja etweas von serial.beginn, ablso muss der Befehl doch vorhanden sein, oder?

In den Samples steht ja etweas von serial.beginn, ablso muss der Befehl doch vorhanden sein, oder?

Da steht Serial.begin
Und nicht serial.beginn

Das gibt es zwar, hat aber nichts mit deinen DS18B20 zu tun.

Dann solltest du mal die "originale" Lib nehmen:

Dallastemperatur
Da ist die geforderte Anweisung "sensors.begin" vorhanden. Nicht Serial.begin.

Guen morgen!
Ich habe jetzt dieDS18B20 lib aus der Sketch entfernt und dafür die Dallastemperatur ersetzt!

#include <Adafruit_GFX.h>    //Display
#include <Adafruit_ST7735.h> //Display
#include <SPI.h> //Display
#include <OneWire.h>
#include <DallasTemperature.h>

Jetzt kommt aber folgender Fehler

laser:52:1: error: 'DS18B20' does not name a type

DS18B20 sensors(&onewire);
void flow ()
{
  flow_frequency++;
}

OneWire onewire(ONEWIRE_PIN);
DS18B20 sensors(&onewire);

void setup(void)
{

Wenn ich die DS18B20 wieder einsetzt, bricht er wieder mit der vorherigen Meldung ab.
??

Wenn du dir die nun includierte <DallasTemperature.h> kurz anschaust, wirst du sehen, dass sie
Objekte vom Typ DallasTemperature deklariert.

Mit

OneWire onewire(ONEWIRE_PIN);
DallasTemperature sensors(&onewire);

kommst du also zumindest über diesen Fehler hinaus.

Hi

Und: Wenn man sich die mitgelieferten Beispiele anschaut (oder sogar antestet), wird man feststellen: klappt doch!
DANN kann man Sich über die Unzulänglichkeiten des eigenen Sketch hermachen und dort die gröbsten Schnitzer ausbügeln.

MfG

ja da stimme ich dir vollkommen zu, aber leider ist diese Sketch n icht von mir, da ich von der Programmierung absolut keinen blassen habe! Bis jetzt (im 3D drucker Bereich) hat immer alles ohne Probleme geklappt!
btw. jetzt kommt wieder

'class DallasTemperature' has no member named 'request'

Jetzt muss ich wiede gucken ob ich die richtige Lib habe oder?

'class DallasTemperature' has no member named 'available'

  if (sensors.available())

Da weiß ich nicht weiter! Vielleicht wieder ein kleiner Tipp wo ich suchen muss? :o ino Dateien in den Samples hab ioch leider nichts gefunden. und die anderen pde Dateien kann ich nicht öffnen!