Da ich eine selbst gebaute Led Uhr habe und diese mit einer RTC läuft wollte ich nun fragen, ob jemand einen Code hat, wo die DCF77 einmal am Tag die RTC aktualisiert. Ich weis das dieses Thema schon oft angesprochen wurde aber ich habe noch keinen konkreten Code gefunden.
Hast Du einen DCF77-Empfänger, der Dir die richtige Zeit liefert? Dann ist der Update des RTC nicht schwierig. Ein sauberer Empfang des DCF77-Signals und die "tolerante" Dekodierung desselben ist allerdings nicht ganz einfach und hängt unter anderem von der von Dir eingesetzten Hardware ab.
Ein Code-Ausschnitt von meinem letzten Uhr-Projekt (aufs wesentliche gekürzt).
Wann und wie oft du dcfsync() aufrufst, kannst du selbst entscheiden.
Die Variable lastdcf speichert die Zeit des letzten Empfangs.
#include "DCF77.h" // von https://github.com/thijse/Arduino-Libraries/downloads
#include "Time.h"
#include "Wire.h"
#define DS1307_ADDRESS 0x68
unsigned long lastdcf=0;
... setup ... loop ...
void dcfsync(){
DCFtime = DCF.getTime(); // Check if new DCF77 time is available
if (DCFtime!=0)
{
setTime(DCFtime);
lastdcf=now();
Wire.beginTransmission(DS1307_ADDRESS);
Wire.write(zero); //stop Oscillator
Wire.write(decToBcd(second(DCFtime)));
Wire.write(decToBcd(minute(DCFtime)));
Wire.write(decToBcd(hour(DCFtime)));
Wire.write(decToBcd(weekday(DCFtime)));
Wire.write(decToBcd(day(DCFtime)));
Wire.write(decToBcd(month(DCFtime)));
Wire.write(decToBcd(year(DCFtime)));
Wire.write(zero); //start
Wire.endTransmission();
}
}
Ich habe die dcf schon einmal mit einem Arduino uno getestet und sie empfängt alle 3 Minuten oder so ein Signal.
Den Code werde ich morgen mal Ausprobieren!
ich habe den Code ausprobiert, aber er wirft ein paar Fehlermeldungen aus:
sketch_jan29a.ino: In function 'void dcfsync()':
sketch_jan29a:16: error: 'DCFtime' was not declared in this scope
sketch_jan29a:16: error: 'DCF' was not declared in this scope
sketch_jan29a:22: error: 'zero' was not declared in this scope
sketch_jan29a:23: error: 'decToBcd' was not declared in this scope
Vieleicht kann mir jemand helfen.
Liebe Grüße,
Valli
Hoppla, hab wohl auf weniger als das wesentliche gekürzt. Sorry!
Kann leider erst morgen abend mehr schicken, weil ich unterwegs bin.
Alternativ kannst dir die Beispiele der Library anschauen, da sollte sich auch viel erklären...