Fehler beim Uhrzeit einstellen RTCModul RTClib.h

Ich habe mir ein RTCshield gekauft und auch die Bibliothek ordnungsgemäß installiert. Leider findet er beim compilieren die Bibliothek nicht, obwohl diese eingebunden ist.

"C:\Users\Abrax\AppData\Local\Temp.arduinoIDE-unsaved202451-18636-gv4z2r.gqn\ds1307\ds1307.ino:2:10: fatal error: RTClib.h: No such file or directory
#include "RTClib.h"
^~~~~~~~~~
compilation terminated.
exit status 1

Compilation error: RTClib.h: No such file or directory"

Wenn ich die "RTClib.h" in das Temporäre Verzeichnis kopiere, macht er zwar erstmal weiter, dann erhalte ich aber eine Menge andere Fehlermeldungen. Was läuft da falsch? :thinking:

Der Fehler liegt in Zeile 42 deines Codes.

Da steht: Serial.print(now.year(), DEC);

Ich habe den Eindruck, dass es sich um ein Verzeichnisproblem handelt. Wenn ich die RTClib.h in den Sketchordner kopiere, kompiliert er erstmal weiter. Aber dann erhalte ich folgende Fehlermeldung:

> C:\Users\Abrax\AppData\Local\Temp\cc7vfIDL.ltrans0.ltrans.o: In function `setup':
> C:\Users\Abrax\Desktop\Documents\Arduino\ds1307/ds1307.ino:15: undefined reference to `RTC_DS1307::begin(TwoWire*)'
> C:\Users\Abrax\Desktop\Documents\Arduino\ds1307/ds1307.ino:21: undefined reference to `RTC_DS1307::isrunning()'
> C:\Users\Abrax\Desktop\Documents\Arduino\ds1307/ds1307.ino:25: undefined reference to `DateTime::DateTime(__FlashStringHelper const*, __FlashStringHelper const*)'
> C:\Users\Abrax\Desktop\Documents\Arduino\ds1307/ds1307.ino:25: undefined reference to `RTC_DS1307::adjust(DateTime const&)'
> C:\Users\Abrax\AppData\Local\Temp\cc7vfIDL.ltrans0.ltrans.o: In function `loop':
> C:\Users\Abrax\Desktop\Documents\Arduino\ds1307/ds1307.ino:40: undefined reference to `RTC_DS1307::now()'
> C:\Users\Abrax\Desktop\Documents\Arduino\ds1307/ds1307.ino:48: undefined reference to `DateTime::dayOfTheWeek() const'
> C:\Users\Abrax\Desktop\Documents\Arduino\ds1307/ds1307.ino:58: undefined reference to `DateTime::unixtime() const'
> C:\Users\Abrax\Desktop\Documents\Arduino\ds1307/ds1307.ino:60: undefined reference to `DateTime::unixtime() const'
> C:\Users\Abrax\Desktop\Documents\Arduino\ds1307/ds1307.ino:64: undefined reference to `TimeSpan::TimeSpan(int, signed char, signed char, signed char)'
> C:\Users\Abrax\Desktop\Documents\Arduino\ds1307/ds1307.ino:64: undefined reference to `DateTime::operator+(TimeSpan const&) const'
> collect2.exe: error: ld returned 1 exit status
> 
> exit status 1
> 
> Compilation error: exit status 1


Lauter undefinierte Referenzen. Was hat das zu bedeuten?

Das ist der Beispiel-Code, um die Uhr zu stellen:

// Date and time functions using a DS1307 RTC connected via I2C and Wire lib
#include "RTClib.h"

RTC_DS1307 rtc;

char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};

void setup () {
  Serial.begin(57600);

#ifndef ESP8266
  while (!Serial); // wait for serial port to connect. Needed for native USB
#endif

  if (! rtc.begin()) {
    Serial.println("Couldn't find RTC");
    Serial.flush();
    while (1) delay(10);
  }

  if (! rtc.isrunning()) {
    Serial.println("RTC is NOT running, let's set the time!");
    // When time needs to be set on a new device, or after a power loss, the
    // following line sets the RTC to the date & time this sketch was compiled
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
    // This line sets the RTC with an explicit date & time, for example to set
    // January 21, 2014 at 3am you would call:
    // rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
  }

  // When time needs to be re-set on a previously configured device, the
  // following line sets the RTC to the date & time this sketch was compiled
  // rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
  // This line sets the RTC with an explicit date & time, for example to set
  // January 21, 2014 at 3am you would call:
  // rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
}

void loop () {
    DateTime now = rtc.now();

    Serial.print(now.year(), DEC);
    Serial.print('/');
    Serial.print(now.month(), DEC);
    Serial.print('/');
    Serial.print(now.day(), DEC);
    Serial.print(" (");
    Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
    Serial.print(") ");
    Serial.print(now.hour(), DEC);
    Serial.print(':');
    Serial.print(now.minute(), DEC);
    Serial.print(':');
    Serial.print(now.second(), DEC);
    Serial.println();

    Serial.print(" since midnight 1/1/1970 = ");
    Serial.print(now.unixtime());
    Serial.print("s = ");
    Serial.print(now.unixtime() / 86400L);
    Serial.println("d");

    // calculate a date which is 7 days, 12 hours, 30 minutes, and 6 seconds into the future
    DateTime future (now + TimeSpan(7,12,30,6));

    Serial.print(" now + 7d + 12h + 30m + 6s: ");
    Serial.print(future.year(), DEC);
    Serial.print('/');
    Serial.print(future.month(), DEC);
    Serial.print('/');
    Serial.print(future.day(), DEC);
    Serial.print(' ');
    Serial.print(future.hour(), DEC);
    Serial.print(':');
    Serial.print(future.minute(), DEC);
    Serial.print(':');
    Serial.print(future.second(), DEC);
    Serial.println();

    Serial.println();
    delay(3000);
}

Wie wurde die Lib eingebunden über die IDE?
Und vermutlich hast du Win11 und die zweier IDE?
Die 2.xx mach schon manchmal komische Sachen

bei mir sieht es so aus kompiliert für ESP32 -> fehlerfrei.

Der Sketch verwendet 282985 Bytes (21%) des Programmspeicherplatzes. Das Maximum sind 1310720 Bytes.
Globale Variablen verwenden 21808 Bytes (6%) des dynamischen Speichers, 305872 Bytes für lokale Variablen verbleiben. Das Maximum sind 327680 Bytes.

Eine Frage noch warum hast die ungenauste Uhr in der Arduinowelt geholt, größeren Schrott gibt's nicht.
was hat aber nix zu sagen mit deinem Sketsch, der funktioniert mit der DS1307

Ja, ich habe die Bibliothek über IDE installiert (Menü). Wenn ich versuche diese nochmals einzubinden, erhalte ich eine Fehlermeldung, dass diese Bibliothek bereits vorhanden ist. Ich habe Windows10.

Das ist schon klar die musst vorher gelöscht werden installiere die als zip

Und nicht die aller neuste nehmen :wink:
Ich habe die 2.0.3

Tja, da bräuchte man noch den "goldenen" Tipp, wie man eine vorhandene Bibliothek wieder löscht.

Ich habe sogar die Arduino-IDE komplett deinstalliert und dann erneut installiert. Selbst danach behauptet er noch steif und fest, dass die RTClib bereits installiert ist. Einbindung der Bibliothek fehlgeschlagen! :roll_eyes:

Also Normal unter
C:\Users\USERNAME \Dokumente\Arduino\libraries

Wen du auf Preferences in der IDE Klickst ist unten auch gezeigt wo deine Lib sind.

Danke, dass hat mich sogar weitergebracht. :+1:

Nach dieser Installation hatte ich noch eine Fehlermeldung, dass die Adafruit.h fehlte.

Nachdem ich auch diese Bibliothek installiert hatte, lief es dann tatsächlich! Große Freude.... :slightly_smiling_face:
:+1: :+1: :+1:

Und in der Anleitung fehlt der Hinweis, dass man auf 57600 Baud umstellen muss.

Schön das funktioniert

Man stellt IMMER das an was im Sketch steht. und die Baudrate kann man einstellen im Setup wie man will.