I've connected my DCF77 module to my Arduino Nano at PIN 2 and try to get a signal with it. Unfortunately the module won't get any signal after more than half an hour.
Here's my code:
#include <DCF77.h> //https://github.com/thijse/Arduino-Libraries/downloads
#include <TimeLib.h> //http://www.arduino.cc/playground/Code/Time
#include <Timezone.h> //https://github.com/JChristensen/Timezone
#define DCF_PIN 2 // Connection pin to DCF 77 device
#define DCF_INTERRUPT 0 // Interrupt number associated with pin
// more time zones, see http://en.wikipedia.org/wiki/Time_zones_of_Europe
//United Kingdom (London, Belfast)
const TimeChangeRule rBST = {"BST", Last, Sun, Mar, 1, 60}; //British Summer Time
const TimeChangeRule rGMT = {"GMT", Last, Sun, Oct, 2, 0}; //Standard Time
const Timezone UK(rBST, rGMT);
//Eastern European Time (Finland, Greece, etc)
const TimeChangeRule rEST = {"EST", Last, Sun, Mar, 1, 180}; //Eastern European Time
const TimeChangeRule rEET = {"EET", Last, Sun, Oct, 1, 120}; //Eastern European Summer Time
const Timezone EET(rEST, rEET);
time_t prevDisplay = 0; // when the digital clock was displayed
time_t time;
const DCF77 DCF = DCF77(DCF_PIN,DCF_INTERRUPT);
void setup() {
Serial.begin(9600);
DCF.Start();
setSyncInterval(30);
setSyncProvider(getDCFTime);
// It is also possible to directly use DCF.getTime, but this function gives a bit of feedback
//setSyncProvider(DCF.getTime);
Serial.println("Waiting for DCF77 UK local time ... ");
Serial.println("It will take at least 2 minutes until a first update can be processed.");
while(timeStatus()== timeNotSet) {
// wait until the time is set by the sync provider
Serial.print(".");
delay(2000);
}
}
void loop()
{
if( now() != prevDisplay) //update the display only if the time has changed
{
prevDisplay = now();
digitalClockDisplay();
}
}
void digitalClockDisplay(){
// digital clock display of the time
Serial.println("");
Serial.print(hour());
printDigits(minute());
printDigits(second());
Serial.print(" ");
Serial.print(day());
Serial.print(" ");
Serial.print(month());
Serial.print(" ");
Serial.print(year());
Serial.println();
}
void printDigits(const uint8_t &digits){
// utility function for digital clock display: prints preceding colon and leading 0
Serial.print(":");
if(digits < 10)
Serial.print('0');
Serial.print(digits);
}
unsigned long getDCFTime()
{
const time_t DCFtime = DCF.getUTCTime(); // Convert from UTC
if (DCFtime!=0) {
Serial.print("X"); // Indicator that a time check is done
const time_t LocalTime = UK.toLocal(DCFtime);
return LocalTime;
}
return 0;
}
Does anyone know how I'm able to get any signal?
