TinyRTC und DCF77 lib fehler

Hallo zusammen,

Bei meinem Uhren-Projekt bekomme ich einen Fehler wenn ich verschiedene Libs gleichzeitig einbinde..

Hier mal der Code der zum Fehler führt:

#include <DCF77.h>
#include <TimeLib.h>  
#include <LedControl.h>
#include "RTClib.h"

void setup() {}

void loop() {}

Hier der Fehler:

Arduino: 1.6.11 (Windows 10), Board: "Arduino Nano, ATmega328"

In file included from C:\Users\ihmSelbst\Documents\Arduino\libraries\Time-master/Time.h:1:0,

from C:\Users\ihmSelbst\Documents\Arduino\libraries\DCF77/DCF77.h:9,

from C:\Users\ihmSelbst\Documents\Arduino\sketch_jan04c\sketch_jan04c.ino:1:

C:\Users\ihmSelbst\Documents\Arduino\libraries\Time-master/TimeLib.h:79:39: error: expected unqualified-id before '/' token

#define dayOfWeek(time) ((( time / SECS_PER_DAY + 4) % DAYS_PER_WEEK)+1) // 1 = Sunday

^

sketch\RTClib.h:17:13: note: in expansion of macro 'dayOfWeek'

uint8_t dayOfWeek() const;

^

C:\Users\ihmSelbst\Documents\Arduino\libraries\Time-master/TimeLib.h:79:39: error: expected ')' before '/' token

#define dayOfWeek(time) ((( time / SECS_PER_DAY + 4) % DAYS_PER_WEEK)+1) // 1 = Sunday

^

sketch\RTClib.h:17:13: note: in expansion of macro 'dayOfWeek'

uint8_t dayOfWeek() const;

^

C:\Users\ihmSelbst\Documents\Arduino\libraries\Time-master/TimeLib.h:79:39: error: expected ')' before '/' token

#define dayOfWeek(time) ((( time / SECS_PER_DAY + 4) % DAYS_PER_WEEK)+1) // 1 = Sunday

^

sketch\RTClib.h:17:13: note: in expansion of macro 'dayOfWeek'

uint8_t dayOfWeek() const;

^

C:\Users\ihmSelbst\Documents\Arduino\libraries\Time-master/TimeLib.h:79:39: error: expected ')' before '/' token

#define dayOfWeek(time) ((( time / SECS_PER_DAY + 4) % DAYS_PER_WEEK)+1) // 1 = Sunday

^

sketch\RTClib.h:17:13: note: in expansion of macro 'dayOfWeek'

uint8_t dayOfWeek() const;

^

exit status 1
Fehler beim Kompilieren für das Board Arduino Nano.

Kann mir jemand sagen was hier falsch läuft bzw. wie ich das Problem in den Griff bekomme?

Wenn ich #include "RTClib.h" auskommentiere, kann ich zwar kompilieren, aber die TinyRTC nicht mehr ansprechen...

Ich bedanke mich vorab für die Unterstützung.

Du musst uns schon den kompletten Sketch posten.
Der Fehler liegt meist im "geheimen" Teil des Sketches.

ihmSelbst:
Hallo zusammen,

Bei meinem Uhren-Projekt bekomme ich einen Fehler wenn ich verschiedene Libs gleichzeitig einbinde..

Kann mir jemand sagen was hier falsch läuft bzw. wie ich das Problem in den Griff bekomme?

Ich würde erstmal damit anfangen, die Libraries richtig zu installieren und Pfade/Dateinamen richtig zu benennen.

Das hier ist als Library-Pfad Affenscheiße:

C:\Users\ihmSelbst\Documents\Arduino\libraries\Time-master/TimeLib.h

Das "master" darin ist falsch.
Und die Library muss so heißen wie derOrdnername, in dem sie sich befindet.

Also wenn die Library TimeLib.h heißt, dann muß sie sich in einem Ordner namens TimeLib befinden.

Also
C:\Users\ihmSelbst\Documents\Arduino\libraries\TieLib/TimeLib.h

Wobei Dein Pfadname auch eine hübsche Sammlung von Pfad-Trennzeichen aus verschiedenen Betriebssystem-Standards darstellt:

Der Backslash (nach links umfallender Schrägstrich) ist Pfadtrennzeichen bei Windows.

Der Slash (nach rechts umfallender Schrägstrich) ist Pfadtrennzeichen bei Unix/Linux

Aber daran scheitert es wohl nicht, der AVR-GCC kann beides, wenn ich mich nicht täusche.

Aber das im Pfadnamen dazwischengeschissene "master" dürfte störend sein, weil dadurch der Pfadname anders heißt als die Library selbst.

HotSystems:
Du musst uns schon den kompletten Sketch posten.
Der Fehler liegt meist im "geheimen" Teil des Sketches.

Weil der Fehler bereits bei diesen 6 Zeilen auftrat, erschien mir das als Überflüssig.

jurs:
Ich würde erstmal damit anfangen, die Libraries richtig zu installieren und Pfade/Dateinamen richtig zu benennen.

Das hier ist als Library-Pfad Affenscheiße:

C:\Users\ihmSelbst\Documents\Arduino\libraries\Time-master/TimeLib.h

Das "master" darin ist falsch.
Und die Library muss so heißen wie derOrdnername, in dem sie sich befindet.

Also wenn die Library TimeLib.h heißt, dann muß sie sich in einem Ordner namens TimeLib befinden.

Also
C:\Users\ihmSelbst\Documents\Arduino\libraries\TieLib/TimeLib.h

Wobei Dein Pfadname auch eine hübsche Sammlung von Pfad-Trennzeichen aus verschiedenen Betriebssystem-Standards darstellt:

Aber daran scheitert es wohl nicht, der AVR-GCC kann beides, wenn ich mich nicht täusche.

Wenn Du mir sagst wie ich auf die Sammlung von Pfadtrennzeichen Einfluss nehmen kann änder ich das gerne, jedoch laufen beide Libs einzeln - nur nicht zusammen. Von daher gehe ich davon aus, dass der AVR-GCC mit beidem klarkommt.

jurs:
Aber das im Pfadnamen dazwischengeschissene "master" dürfte störend sein, weil dadurch der Pfadname anders heißt als die Library selbst.

Habe nun das "-master" durch "Lib" ersetzt. Bekomme aber nach wie vor den gleichen Fehler angezeigt.

Edit: Nach langem hin und her habe ich den Fehler gefunden! Durch ein ändern der Reihenfolge der Libs konnte ich das Problem lösen:

#include "Wire.h"
#include "RTClib.h"
#include <DCF77.h>
#include <TimeLib.h>  
#include <LedControl.h> // to drive the Max 7219
#include <binary.h>
#include <avr/pgmspace.h>

Trotzdem vielen Dank!!

PS: Bei der Gegenheit - gibt es keine vernünftige IDE mit refactoring die mich auf solche "eigenheiten" hinweist?

HotSystems:
Du musst uns schon den kompletten Sketch posten.
Der Fehler liegt meist im "geheimen" Teil des Sketches.

ihmSelbst:
Hier mal der Code der zum Fehler führt:

Ein perfektes Beispiel: Der minimale aber komplette Code. So soll es sein. Danke.

Nach langem hin und her habe ich den Fehler gefunden! Durch ein ändern der Reihenfolge der Libs konnte ich das Problem lösen:

Statt:

#include <DCF77.h>
#include <TimeLib.h> 
#include <LedControl.h>
#include "RTClib.h"

besser

#include "Wire.h"
#include "RTClib.h"
#include <DCF77.h>
#include <TimeLib.h> 
#include <LedControl.h> // to drive the Max 7219
#include <binary.h>
#include <avr/pgmspace.h>

Das Problem liegt eher in der IDE und ihrem Hokuspokus, als in den einzelnen Libraries.
Dass Wire.h am Anfang aufgeführt werden muss, obwohl es direkt gar nicht verwendet wird, tritt ofters auf.

Zur IDE:
Microsoft VisualStudio mit dem VisualMicro Plugin ist besser, aber natürlich viel umfangreicher mit lauter nicht-arduino-spezifischem.
Und die Gratis Version nervt etwas...