# DCF77 \<--\> RTC

**URL:** <https://forum.arduino.cc/t/dcf77-rtc/444956>\
**Category:** Deutsch\
**Created:** [March 15, 2017, 6:18pm UTC](https://forum.arduino.cc/t/dcf77-rtc/444956 "2017-03-15T18:18:42Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![Hartig\_jue](https://avatars.discourse-cdn.com/v4/letter/h/5f9b8f/32.png) [@Hartig\_jue](https://forum.arduino.cc/u/Hartig_jue)\
**Post date:** [March 15, 2017, 6:18pm UTC](https://forum.arduino.cc/t/dcf77-rtc/444956/1 "2017-03-15T18:18:42Z")

</div>

```cpp
void Funk() {
  time_t DCFtime = DCF.getTime();
  if (DCFtime != 0) {
    setTime(DCFtime);
    rtc.adjust(DateTime(year(), month(), day(), hour(), minute(), second()));
  }
}

```

get das so, wen anschiessend

```cpp
 DateTime now = rtc.now();

```

kommt o. überschreibt sich das gegenseitig ??

---

<div class="post-metadata">

**Author:** ![HotSystems](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/hotsystems/32/219785_2.png) [@HotSystems](https://forum.arduino.cc/u/HotSystems)\
**Post date:** [March 15, 2017, 6:57pm UTC](https://forum.arduino.cc/t/dcf77-rtc/444956/2 "2017-03-15T18:57:25Z")

</div>

Du solltest den kompletten Sketch posten, damit wir auch sehen was zwischendurch passiert.

Allerdings sieht es so aus, dass die Variable in der nachfolgenden Anweisung überschrieben wird.

---

<div class="post-metadata">

**Author:** ![Hartig\_jue](https://avatars.discourse-cdn.com/v4/letter/h/5f9b8f/32.png) [@Hartig\_jue](https://forum.arduino.cc/u/Hartig_jue)\
**Post date:** [March 15, 2017, 7:49pm UTC](https://forum.arduino.cc/t/dcf77-rtc/444956/3 "2017-03-15T19:49:36Z")

</div>

der komplette code

```cpp
#include "DCF77.h"
#include <TimeLib.h>
#define DCF_PIN 2
#define DCF_INTERRUPT 0
#define POWER 7
time_t time;
DCF77 DCF = DCF77(DCF_PIN, DCF_INTERRUPT);

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <Nextion.h>
#include <RTClib.h>
#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <DHT_U.h>
#define DHTPIN  4
#define DHTTYPE  DHT22    // DHT 22 (AM2302)
DHT_Unified dht(DHTPIN, DHTTYPE);
#include <RTClib.h>
RTC_DS3231 rtc;

unsigned long prev = 0;
const unsigned long Motor = 30000;                          // 30 sekunden für Motorlauf
const unsigned long Cool =  10000;
int ReedPin = 8;
int Relais1pin = 2;
int Relais2pin = 3;
int myStunde, myMinute, mySekunde, Temp, Uzeiger ;
int F_auf = 15;                          // Temperatur zum öffnen
int F_zu = 10;                            // Temperatur zum Schliessen
int Timer = 0;
int Reed = HIGH;
NexPage page0 = NexPage(0, 0, "page0");
NexPage page1 = NexPage(1, 0, "page1");
NexPage page2 = NexPage(2, 0, "page2");
NexPage page3 = NexPage(3, 0, "page3");
//-----------------------------------------
NexButton bSetup = NexButton(0, 2, "bSetup");
NexButton bAuf = NexButton(0, 3, "bAuf");
NexButton bZu = NexButton(0, 4, "bZu");
NexButton bBackE = NexButton(3, 2, "bBackE");
NexButton bUhr = NexButton(3, 3, "bUhr");
NexButton bTemp = NexButton(3, 4, "bTemp");
NexButton bStunde = NexButton(1, 5, "bStunde");
NexButton bMinute = NexButton(1, 6, "bMinute");
NexButton bSekunde = NexButton(1, 7, "bSekunde");
NexButton bBack1 = NexButton(1, 2, "bBack1");
NexButton bPlus1 = NexButton(1, 3, "bPlus1");
NexButton bMinus1 = NexButton(1, 4, "bMinus1");
NexButton bTHigh = NexButton(2, 5, "bTHigh");
NexButton bTLow = NexButton(2, 6, "bTLow");
NexButton bBack3 = NexButton(2, 2, "bBack3");
NexButton bPlus2 = NexButton(2, 3, "bPlus2");
NexButton bMinus2 = NexButton(2, 4, "bMinus2");
//----------------------------------------------
NexNumber nexStunde = NexNumber(0, 9, "nexStunde");
NexNumber nexMinute = NexNumber(0, 10, "nexMinute");
NexNumber nexSekunde = NexNumber(0, 11, "nexSekunde");
NexNumber nexTemp = NexNumber(0, 12, "nexTemp");
NexNumber nexThigh = NexNumber(2, 7, "nexThigh");
NexNumber nexTlow = NexNumber(2, 8, "nexTlow");

char buffer[10] = {0};
NexTouch *nex_Listen_List[] =
{
  &bSetup,
  &bAuf,
  &bZu,
  &bBackE,
  &bUhr,
  &bTemp,
  &bStunde,
  &bMinute,
  &bSekunde,
  &bBack1,
  &bPlus1,
  &bMinus1,
  &bTHigh,
  &bTLow,
  &bBack3,
  &bPlus2,
  &bMinus2,
  &page0,
  &page1,
  &page2,
  &page3,
  NULL
};

void motor_aus () {
  digitalWrite (Relais1pin, 1);
  digitalWrite (Relais2pin, 1);
}
void motor_links() {
  digitalWrite (Relais1pin, 0);
  digitalWrite (Relais2pin, 1);
  Serial.println("schliessen");
  Serial.println(Relais1pin, Relais2pin);
}

void motor_rechts () {
  digitalWrite (Relais1pin, 1);
  digitalWrite (Relais2pin, 0);
  Serial.println("oeffnen");
}

void showTime() {
  char h[20] = {0};
  char m[20] = {0};
  char s[20] = {0};
  DateTime now = rtc.now();
  myStunde = now.hour();
  myMinute = now.minute();
  mySekunde = now.second();
  itoa(myStunde, h, 10);
  nexStunde.setValue(myStunde);
  itoa(myMinute, m, 10);
  nexMinute.setValue(myMinute);
  itoa(mySekunde, s, 10);
  nexSekunde.setValue(mySekunde);
}
void showTemp() {
  // Get temperature event and print its value.
  sensors_event_t event;
  dht.temperature().getEvent(&event);
  if (isnan(event.temperature)) {
    Serial.println("Error reading temperature!");
  }
  else {
    Serial.print("Temperature: ");
    Serial.print(event.temperature);
    Serial.println(" *C");
    Temp = (event.temperature);
  }
  nexTemp.setValue(Temp);
}
void bSetupPopCallback(void *ptr) {
  page3.show();
}
void bBackECallback(void *ptr) {
  page0.show();
}
//=================== Uhr stellen =========
void bUhrPopCallback(void *ptr) { // Maske wird aufgerufen
  Funk();
}

//========= Ende Uhr stellen
void bTempPopCallback(void *ptr) {
  page2.show();
  nexThigh.setValue(F_auf);
  nexTlow.setValue(F_zu);
}

void bTHighPopCallback(void *ptr) {
  Uzeiger = 1;
}

void bTLowPopCallback(void *ptr) {
  Uzeiger = 2;
}
void bPlus2PopCallback(void *ptr) {
  if (Uzeiger == 1) F_auf++;
  if (Uzeiger == 2) F_zu++ ;
  nexThigh.setValue(F_auf);
  nexTlow.setValue(F_zu);
}
void bMinus2PopCallback(void *ptr) {
  if (Uzeiger == 1) F_auf--;
  if (Uzeiger == 2) F_zu-- ;
  nexThigh.setValue(F_auf);
  nexTlow.setValue(F_zu);
}
void bBack3PopCallback(void *ptr) {
  Uzeiger = 0;
  page0.show();
}
void Funk() {
  time_t DCFtime = DCF.getTime();
  if (DCFtime != 0) {
    setTime(DCFtime);
    rtc.adjust(DateTime(year(), month(), day(), hour(), minute(), second()));
  }
}

void setup() {
  pinMode(7, OUTPUT);
  digitalWrite(7, LOW);
  DCF.Start();
  dht.begin();
  rtc.begin();
  Uzeiger = 0;
  bSetup.attachPop(bSetupPopCallback, &bSetup);
  bUhr.attachPop(bUhrPopCallback, &bUhr);
  bSekunde.attachPop(bSekundePopCallback, &bSekunde);
  bTemp.attachPop(bTempPopCallback, &bTemp);
  bBackE.attachPop(bBackECallback, &bBackE);
  bBack1.attachPop(bBack1PopCallback, &bBack1);
  bStunde.attachPop(bStundePopCallback, &bStunde);
  bMinute.attachPop(bMinutePopCallback, &bMinute);
  bMinus1.attachPop(bMinus1PopCallback, &bMinus1);
  bPlus1.attachPop(bPlus1PopCallback, &bPlus1);
  bTHigh.attachPop(bTHighPopCallback, &bTHigh);
  bTLow.attachPop(bTLowPopCallback, &bTLow);
  bMinus2.attachPop(bMinus2PopCallback, &bMinus1);
  bPlus2.attachPop(bPlus2PopCallback, &bPlus2);
  bBack3.attachPop(bBack3PopCallback, &bBack3);
  pinMode (ReedPin, INPUT_PULLUP);
  pinMode (Relais1pin, OUTPUT);            // Relais als Output
  pinMode (Relais2pin, OUTPUT);            // Relais als Output
  digitalWrite (Relais1pin, HIGH);
  digitalWrite (Relais2pin, HIGH);
  // Initialize device.

  Serial.println("DHTxx Unified Sensor Example");
  // Print temperature sensor details.
  sensor_t sensor;
  dht.temperature().getSensor(&sensor);
 
  if (! rtc.begin()) {
    Serial.println("Couldn't find RTC");
    while (1);
  }

  if (rtc.lostPower()) {
    Serial.println("RTC lost power, lets set the time!");
    Funk();
  }
  nexInit();
}
void loop() {
  nexLoop(nex_Listen_List);
  Reed = digitalRead(ReedPin);
  showTime();
  showTemp();

  if (Temp <= F_zu && Reed == HIGH) {
    motor_aus();
    motor_links();
    Timer = 1;
  }
  if (Temp >= F_auf && Reed == LOW) {
    Serial.println ("oeffnen");
    motor_aus();
    motor_rechts();
    Timer = 1;
  }
  if (Timer == 1 && (millis() - prev) >= Motor) {
    prev = millis();
    motor_aus();
    Timer = 2;
  }
  if (Timer == 2 && (millis() - prev) >= Cool) {
    prev = millis();
    Timer = 0;
  }
  Serial.print("Reed=");
  Serial.println(Reed);
  Serial.print("Timer =");
  Serial.println(Timer);
  Serial.println("------------------------------------------------------");
  delay(1000);

}

```

---

<div class="post-metadata">

**Author:** ![uwefed](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/uwefed/32/213736_2.png) [@uwefed](https://forum.arduino.cc/u/uwefed)\
**Post date:** [March 15, 2017, 9:02pm UTC](https://forum.arduino.cc/t/dcf77-rtc/444956/4 "2017-03-15T21:02:52Z")

</div>

Bitte Link zu den beiden Bibliotheken.  
Grüße Uwe

---

<div class="post-metadata">

**Author:** ![Hartig\_jue](https://avatars.discourse-cdn.com/v4/letter/h/5f9b8f/32.png) [@Hartig\_jue](https://forum.arduino.cc/u/Hartig_jue)\
**Post date:** [March 16, 2017, 7:51am UTC](https://forum.arduino.cc/t/dcf77-rtc/444956/5 "2017-03-16T07:51:08Z")

</div>

DCF77 Ist Version 1 und über die Arduino IDE installiert

TimeLib V 1.5.0 ist in der Time-Lib. ebenfalls stadndar von der Arduino IDE

---

<div class="post-metadata">

**Author:** ![HotSystems](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/hotsystems/32/219785_2.png) [@HotSystems](https://forum.arduino.cc/u/HotSystems)\
**Post date:** [March 16, 2017, 8:23am UTC](https://forum.arduino.cc/t/dcf77-rtc/444956/6 "2017-03-16T08:23:40Z")

</div>

> Hartig\_jue:  
> DCF77 Ist Version 1 und über die Arduino IDE installiert
> 
> TimeLib V 1.5.0 ist in der Time-Lib. ebenfalls stadndar von der Arduino IDE

Das sind keine Links deiner Libraries.  
Was glaubst du, wie viel verschiedene Libraries es mit dem selben Namen gibt.  
Also bitte Link der verwendeten Libs posten.

---

<div class="post-metadata">

**Author:** ![Hartig\_jue](https://avatars.discourse-cdn.com/v4/letter/h/5f9b8f/32.png) [@Hartig\_jue](https://forum.arduino.cc/u/Hartig_jue)\
**Post date:** [March 16, 2017, 9:21am UTC](https://forum.arduino.cc/t/dcf77-rtc/444956/7 "2017-03-16T09:21:48Z")

</div>

ich habe keine LInks weil eben in der IDE Gefunden und eingebunden  
die IDE aktualisiert ja immer wenn es neues Versionen gibt o. soll ich die Libs selber irgenwo hochladen ?

von mir hochgeladen: [http://workupload.com/file/sFye8FD](http://workupload.com/file/sFye8FD)

---

<div class="post-metadata">

**Author:** ![jurs](https://avatars.discourse-cdn.com/v4/letter/j/43a26b/32.png) [@jurs](https://forum.arduino.cc/u/jurs)\
**Post date:** [March 16, 2017, 9:42am UTC](https://forum.arduino.cc/t/dcf77-rtc/444956/8 "2017-03-16T09:42:05Z")

</div>

> Hartig\_jue:  
> ich habe keine LInks weil eben in der IDE Gefunden und eingebunden

Auch wenn Du eine Library über den von der IDE aus startbaren "Bibliotheksverwalter" installiert hast, sollte sich trotzdem herausfinden lassen, um welche Library es sich im Einzelfall handelt.

Schaue ggf. in den Quelltext der installierten .h und .cpp Datei sowie .in die ino Beispiel-Sketche zur Library!

Richtige DCF-Bibliotheken gibt es für Arduino meines Erachtens nach gar nicht so viele, eigentlich fallen mir nur zwei Stück ein:

- eine ist von Thijs Elenbaas
- die andere ist von Udo Klein

Und Du willst uns erzählen, Deine installierten Libraries sind absolute Blackboxes, aus denen niemand (und Du schon gar nicht) erkennen kann, um welche Libraries es sich handelt, weil das nur der Bibliotheksverwalter der IDE weiß?

Also die DCF-Library von Thijs Elenbaas hat meines Wissens nach NIE ein Update bekommen, die ist auf dem zuerst veröffentlichten Stand von vor fünf Jahren oder so.

Schau mal nach, ob Dir das hier nicht bekannt vorkommt, einschließlich der Programmnamen der "Examples":

> **[GitHub - thijse/Arduino-DCF77: Efficient and complete DCF77 library for Arduino](https://github.com/thijse/Arduino-DCF77)**
>
> Efficient and complete DCF77 library for Arduino. Contribute to thijse/Arduino-DCF77 development by creating an account on GitHub.

Das wäre allerdings nur eine recht simpel gestrickte Library zum Empfangen und Decodieren von DCF-Signalen, die bereits bei leicht gestörten Signalen dazu neigt, völlig zu versagen, und eine Time-Library zum Umgang mit RTC-Modulen ist da noch nicht enthalten.

---

<div class="post-metadata">

**Author:** ![Hartig\_jue](https://avatars.discourse-cdn.com/v4/letter/h/5f9b8f/32.png) [@Hartig\_jue](https://forum.arduino.cc/u/Hartig_jue)\
**Post date:** [March 16, 2017, 10:06am UTC](https://forum.arduino.cc/t/dcf77-rtc/444956/9 "2017-03-16T10:06:28Z")

</div>

DCF77:[Arduino Playground - DCF77](http://playground.arduino.cc/Code/DCF77)  
RTCLib: [GitHub - adafruit/RTClib: A fork of Jeelab's fantastic RTC Arduino library](https://github.com/adafruit/RTClib)  
TimeLib:[http://playground.arduino.cc/code/time](http://playground.arduino.cc/code/time)  
Nextion: [GitHub - itead/ITEADLIB\_Arduino\_Nextion](https://github.com/itead/ITEADLIB_Arduino_Nextion)  
DHT: [GitHub - adafruit/DHT-sensor-library: Arduino library for DHT11, DHT22, etc Temperature & Humidity Sensors](https://github.com/adafruit/DHT-sensor-library)

fehlt noch was spezielles ?

---

<div class="post-metadata">

**Author:** ![system](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/system/32/1140315_2.png) [@system](https://forum.arduino.cc/u/system)\
**Post date:** [May 6, 2021, 1:25pm UTC](https://forum.arduino.cc/t/dcf77-rtc/444956/10 "2021-05-06T13:25:22Z")

</div>


