Hallo,
ich möchte mein ESP32 gerne mit dem DCF77 Zeitsignal versorgen und auswerten. (Wlan ist nicht vorhanden)
Ich bin mittlerweile am verzweifeln da ich scheinbar immer ein Problem mit der DCF77 Bibliothek bekomme.
Wenn ic
#include <DCF77.h>
#include <Time.h>
#define DCF_PIN 8
#define DCF_INTERRUPT 0
time_t time;
DCF77 DCF = DCF77(DCF_PIN,DCF_INTERRUPT);
void setup()
{
Serial.begin(115200);
DCF.Start();
}
void digitalClockDisplay(time_t _time)
{ tmElements_t tm;
breakTime(_time, tm);
Serial.print("Time: ");
Serial.print(tm.Hour);
Serial.print(":");
....
Serial.print(tm.Month);
Serial.print(".");
Serial.println(tm.Year+1970);
}
Ergebnis: Compilation error: 'time_t time' redeclared as different kind of symbol
Ich stehe da echt auf dem Schlauch. Was mache ich falsch?
Lies dir das mal durch.
Vielleicht hilft es. Immerhin ist eine Hardware-Anforderung drin.
Alternativ. Nutze einfach ein Zeitmodul mit Batterie.
Gruß
Pucki
fony
January 20, 2024, 2:56pm
3
welsche Time ist das ?
Empfohlen
Danke für deinen Hinweis!
Dann sollte es
time_t t = now(); // store the current time in time variable t
sein.
Wenn ich das aber auf t anpasse, kompilliert er nicht mehr:
time_t currentTime =latestupdatedTime - UTCTimeDifference + (now() - processingTimestamp);
^~~
pow
exit status 1
Compilation error: exit status 1
Kai-R
January 20, 2024, 4:38pm
5
Verwende doch die Libs, die in den Beispielen zu der Library aufgeführt sind:
/*
* TimeZones.ino
* example code illustrating time synced from a DCF77 receiver
* Thijs Elenbaas, 2012-2017
* This example code is in the public domain.
This example shows how to fetch a DCF77 time and synchronize
the internal clock. In order for this example to give clear output,
make sure that you disable logging from the DCF library. You can
do this by commenting out #define VERBOSE_DEBUG 1 in Utils.cpp.
NOTE: If you used a package manager to download the DCF77 library,
make sure have also fetched these libraries:
* Time
* Timezone
*/
#include <DCF77.h> //https://github.com/thijse/Arduino-Libraries/downloads
This file has been truncated. show original
ec2021
January 20, 2024, 5:30pm
6
Hi @Kai-R ,
wenn ich das Beispiel aus der DCF77 Library bei mir compilieren will, ergibt sich zunächst der gleiche Fehler: 'time_t time' redeclared as different kind of symbol.
Ich habe dann mal diese Zeile rausgenommen (alternativ auf "time_t mytime;" ändern):
// Die folgende Zeile auskommentieren, so dass der Fehler
// error: 'time_t time' redeclared as different kind of symbol
// verschwindet. Augenscheinlich muss die Variable "time" hier gar nicht mehr deklariert werden.
//time_t time;
Danach taucht der Fehler in der DCF77-Library auf, dass "now()" nicht deklariert sei.
Bei einem Blick in die DCF77.cpp zeigt sich dann Folgendes (hier nur der relevante Ausschnitt):
#include <DCF77.h> //https://github.com/thijse/Arduino-Libraries/downloads
#include <Time.h> //http://playground.arduino.cc/code/time
#include <Utils.h>
Wenn man nun hier von Time.h auf TimeLib.h umstellt, compiliert der Beispielsketch fehlerfrei (von einigen Warnungen, die auch schon vorher da waren, abgesehen).
Man muss also die DCF77-Library installieren, dort DCF77.cpp öffnen, ändern und speichern:
#include <DCF77.h> //https://github.com/thijse/Arduino-Libraries/downloads
#include <TimeLib.h>
#include <Utils.h>
Ob der Rest dann das tut, was gewünscht ist, bleibt zu prüfen ...
ec2021
January 20, 2024, 5:42pm
7
Schau Dir mal meinen Hinweis im Post 6 an ...
Als erstes mal im Sketch die Zeile time_t time; auskommentieren und speichern:
//time_t time;
Weiter (für Windows):
Das Verzeichnis mit den Libs findest Du am einfachsten, indem Du in der IDE die Einstellungen öffnest und Dir den Pfad des Sketchbooks merkst:
Den öffnest Du dann im Dateiexplorer, suchst dort den Ordner "libraries" und öffnest diesen:
Dort in den Ordner DCF77
Und dann die Datei DCF77.cpp öffnen:
Dort dann anstelle von "#include <Time.h>" das TimeLib.h eintragen, das sollte dann so aussehen:
Speichern.
Zurück zur IDE und kompilieren ...
Ich hoffe es hilft, viel Erfolg!
1 Like
Das ist wirklich eine super Anleitung! Vielen Dank dafür.
Es funktioniert!
Um allen anderen eine fertigen Sketch zu geben, hier mein kleines Testprogramm:
#include "DCF77.h"
#include "TimeLib.h"
#include <Wire.h>
#define DCF_PIN 35
#define DCF_INTERRUPT 0
//time_t time;
DCF77 DCF = DCF77(DCF_PIN, DCF_INTERRUPT);
bool g_bDCFTimeFound = false;
void setup()
{
Serial.begin(115200);
DCF.Start();
Serial.println("Warten auf DCF77-Zeit... ");
delay(2000);
}
void loop()
{
delay(1000);
time_t DCFtime = DCF.getTime();
if (DCFtime!=0)
{
Serial.println("Zeit ist aktuell");
setTime(DCFtime);
g_bDCFTimeFound = true;
}
if (g_bDCFTimeFound)
{
delay(50);
}
digitalClockDisplay();
}
void digitalClockDisplay()
{
printDigits(hour());
Serial.print(":");
printDigits(minute());
Serial.print(":");
printDigits(second());
Serial.print(" ");
Serial.print(day());
Serial.print(" ");
Serial.print(month());
Serial.print(" ");
Serial.print(year());
Serial.println();
}
void printDigits(int digits)
{
if(digits < 10)
Serial.print('0');
Serial.print(digits);
}
1 Like
system
Closed
July 18, 2024, 6:35pm
9
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.