NODEMCU und RTC (DS1307RTC.h)

Hallo,

wenn ich aus den Beispielen der ARDUINO-IDE unter DS1307RTC den ReadTest nehme, als Board die NodeMCU1.0 einstelle und dann kompiliere bricht dies mit einer mir unverständlichen Fehlermeldung ab.

#include <Wire.h>
#include <TimeLib.h>
#include <DS1307RTC.h>

void setup() {
  Serial.begin(9600);
  while (!Serial) ; // wait for serial
  delay(200);
  Serial.println("DS1307RTC Read Test");
  Serial.println("-------------------");
}

void loop() {
  tmElements_t tm;

  if (RTC.read(tm)) {
    Serial.print("Ok, Time = ");
    print2digits(tm.Hour);
    Serial.write(':');
    print2digits(tm.Minute);
    Serial.write(':');
    print2digits(tm.Second);
    Serial.print(", Date (D/M/Y) = ");
    Serial.print(tm.Day);
    Serial.write('/');
    Serial.print(tm.Month);
    Serial.write('/');
    Serial.print(tmYearToCalendar(tm.Year));
    Serial.println();
  } else {
    if (RTC.chipPresent()) {
      Serial.println("The DS1307 is stopped.  Please run the SetTime");
      Serial.println("example to initialize the time and begin running.");
      Serial.println();
    } else {
      Serial.println("DS1307 read error!  Please check the circuitry.");
      Serial.println();
    }
    delay(9000);
  }
  delay(1000);
}

void print2digits(int number) {
  if (number >= 0 && number < 10) {
    Serial.write('0');
  }
  Serial.print(number);
}

Nehme ich als Board den UNO klappt das kompilieren.
Ich bin 100% sicher dass das schon mal geklappt hat. Ich habe einen Sketch vom Nov. 2017 auf einer NodeMCU am laufen, dort läuft auch die RTC 1307 (genau genug). Jetzt wollte ich diesen Sketch heute nochmals überarbeiten und er lässt sich auch nicht mehr kompilieren.
Hier heist es am Ende der Fehlermeldung:
"no matching function for call to 'DS1307RTC::read(tmElements_t&)'" mit Bezug auf "RTC.read(tm);"

Hat mir da jemand eine Erklärung???

Jetzt wollte ich diesen Sketch heute nochmals überarbeiten und er lässt sich auch nicht mehr kompilieren.

Dann hast du jetzt eine andere IDE - Version mit anderer DS1307RTC, oder einen anderen NodeMCU core in deiner IDE.

Eher erstaunlich, dass der Fehler
  "no matching function for call to 'DS1307RTC::read(tmElements_t&)'"
an der Board-Definition hängen soll, statt an deinen beiden Libs

#include <TimeLib.h>
#include <DS1307RTC.h>

Ich habe z.B. weder DS1307RTC als Library in meiner IDE, auch nicht in den Beispielen,
noch den NodeMCU, auch nicht im Boardverwalter.

Aber eigentlich ist die Fehlermeldung doch klar verständlich, oder ? :wink:

michael_x:
Eher erstaunlich, dass der Fehler

  "no matching function for call to 'DS1307RTC::read(tmElements_t&)'"

an der Board-Definition hängen soll, statt an deinen beiden Libs

Aber eigentlich ist die Fehlermeldung doch klar verständlich, oder ? :wink:

Hallo und danke,

ja, zuerst bin ich ja auch an den Libs hängen geblieben, aber die sind uralt (Dateidatum 2015, Stand laut Beschreibung 2011 und 2014).
Jetzt habe ich Board-Definitionen um 2 Versionen zurückgenommen. Dann ging die RTC-Geschichte, aber er hat dann was an meiner SD-Card moniert. Dann habe ich diese LIB auch zurückgenommen und dann ging es....

Aber das ist doch recht unpraktisch. Eigentlich möchte ich ja immer aktuelle Dateien haben, aber anderseits sollten die alten Sketche auch noch zum kompilieren sein. Wie kann man diesen Spagat lösen?

Wie kann man diesen Spagat lösen

Musst du dich in die uralten Libraries reinwühlen und schauen, wo sie in hardwarespezifischem Zeug landen.

Oder gucken, ob das jemand schon für diese Libraries gemacht hat :wink:

Aber warum es "no matching function for call to 'DS1307RTC::read(tmElements_t&)'" gibt, sollte eigentlich sehr früh klar werden ...

Ist halt OpenSource, das muss man mögen, weil man sich bei keinem beschweren kann.

michael_x:
Aber warum es "no matching function for call to 'DS1307RTC::read(tmElements_t&)'" gibt, sollte eigentlich sehr früh klar werden ...

Eben das nicht, weil es ja wohl nicht an der Lib lag...

Ich kann das Verhalten bei Dir nicht nachvollziehen. Bei mir kompiliert das DS1307RTC-Read-Beispiel sowohl für UNO, als auch für NodeMCU 1.0 ohne Probleme (ESP8266 Version 2.3.0).

Ich benutze diese Lib.
Testen kann ich nicht, da ich diese RTC nicht habe.

Gruß Tommy

ich ja auch an den Libs hängen geblieben, aber die sind uralt (Dateidatum 2015, Stand laut Beschreibung 2011 und 2014).

Nach Github und PaulStoffregen sollte es schon mindestens "May 2016" sein ...

Wenn es noch interessiert, wäre auch interessant, wo genau der Fehler auftritt.
(Vermutlich nicht in der .cpp Form deiner .ino Dateien)

Und eigentlich stellt es sich für mich eher so dar, als ob das Problem darin besteht, dass beim Uno gar nicht gemeckert wird.

Hallo Tommy,

mit der 2.3.0 geht es hier auch, es gibt aber auch neuere bis 2.4.1. Damit geht es (hier) nicht...

Dann wird das wohl ein Bug der neueren Version sein. Deshalb wechsel ich nicht. Da sind mir noch zu viele Bugs drin. Du kannst Dir die issues ja mal anschauen und evtl. eine neue hinzufügen.

Gruß Tommy

oh je, so tief möchte ich eigentlich nicht einsteigen.......

Dann kannst Du entweder bei 2.3.0 bleiben oder das Thema streichen.

Gruß Tommy