Guten Tag Forumskollegen,
Ich habe versucht den Code den der Faraday Member Whandall für den User DaHu geschrieben hat,
siehe Toppic Zeitschaltuhr: DCF77 setzt RTC (DS3231) - Arduino hängt sich regelmäßig auf - Deutsch - Arduino Forum mit der Arduino Software Version 1.6.12 (für Mac) zu Compilieren.
Ich erhalte nur diese Fehlermeldungen
Warning: Board ICT_Boards:avr:radinoCC1101 doesn't define a 'build.board' preference. Auto-set to: AVR_RADINOCC1101
Warning: Board ICT_Boards:avr:radinoRF233 doesn't define a 'build.board' preference. Auto-set to: AVR_RADINORF233
Warning: Board ICT_Boards:avr:radinoWiFi doesn't define a 'build.board' preference. Auto-set to: AVR_RADINOWIFI
Warning: Board ICT_Boards:avr:radinoRF69 doesn't define a 'build.board' preference. Auto-set to: AVR_RADINORF69
Warning: Board ICT_Boards:avr:radinonrf8001 doesn't define a 'build.board' preference. Auto-set to: AVR_RADINONRF8001
WARNUNG: Kategorie '' in der Bibliothek UIPEthernet ist ungültig und wird auf 'Uncategorized' festgelegt
In file included from /Users/Stefan/Documents/Arduino/DCF77SETSDS3231/DCF77SETSDS3231.ino:5:0:
/Users/Stefan/Documents/Arduino/libraries/DS1307RTC/DS1307RTC.h:19:22: error: 'tmElements_t' has not been declared
static bool read(tmElements_t &tm);
^
/Users/Stefan/Documents/Arduino/libraries/DS1307RTC/DS1307RTC.h:20:23: error: 'tmElements_t' has not been declared
static bool write(tmElements_t &tm);
^
DCF77SETSDS3231:31: error: 'time_t time' redeclared as different kind of symbol
time_t time;
^
In file included from /Users/Stefan/Documents/Arduino/libraries/DCF77/DCF77.h:9:0,
from /Users/Stefan/Documents/Arduino/DCF77SETSDS3231/DCF77SETSDS3231.ino:4:
/Applications/Arduino.app/Contents/Java/hardware/tools/avr/avr/include/time.h:122:21: note: previous declaration 'time_t time(time_t*)'
time_t time(time_t *timer);
^
/Users/Stefan/Documents/Arduino/DCF77SETSDS3231/DCF77SETSDS3231.ino: In function 'void setup()':
DCF77SETSDS3231:63: error: 'setSyncProvider' was not declared in this scope
setSyncProvider(RTC.get);
^
/Users/Stefan/Documents/Arduino/DCF77SETSDS3231/DCF77SETSDS3231.ino: In function 'void loop()':
DCF77SETSDS3231:75: error: 'tmElements_t' was not declared in this scope
tmElements_t tm;
^
DCF77SETSDS3231:76: error: expected primary-expression before ')' token
breakTime(DCFtime, tm);
^
DCF77SETSDS3231:76: error: 'breakTime' was not declared in this scope
DCF77SETSDS3231:77: error: expected primary-expression before ')' token
if (RTC.write(tm)) {
^
DCF77SETSDS3231:96: error: 'now' was not declared in this scope
time_t t = now();
^
DCF77SETSDS3231:97: error: 'minute' was not declared in this scope
byte aktMinute = minute(t); //aktuelle Minute setzen
^
DCF77SETSDS3231:98: error: 'hour' was not declared in this scope
byte aktStunde = hour(t); //aktuelle Stunde setzen
^
exit status 1
'time_t time' redeclared as different kind of symbol
Hier ist der Code von Faraday Member Whandall
#include <DCF77.h>
#include <DS1307RTC.h>
#include <Time.h>
#include <Wire.h>
class aSetting {
public:
byte onStunde;
byte onMinute;
byte offStunde;
byte offMinute;
aSetting(byte onStd, byte onMin, byte offStd, byte offMin) {
onStunde = onStd;
onMinute = onMin;
offStunde = offStd;
offMinute = offMin;
}
bool isOn(byte aktStd, byte aktMin) {
return ((onStunde == aktStd) && (onMinute == aktMin));
}
bool isOff(byte aktStd, byte aktMin) {
return ((offStunde == aktStd) && (offMinute == aktMin));
}
};
#define DCF_PIN 2
#define DCF_INTERRUPT 0
time_t time;
DCF77 DCF = DCF77(DCF_PIN, DCF_INTERRUPT, true);
const byte ledPinStatusDCF = 6; //DCF77 Statusanzeige
const byte ledPin1 = 12 ; //LED an, gleich Relais1 zieht an
const byte ledPin2 = 13 ; //LED an, gleich Relais2 zieht an
const byte Relais1 = 3 ; //Schaltet Radio
const byte Relais2 = 7 ; //Reserve Relais wird von Pin 7 geschaltet
aSetting r1Alarms[] = {
aSetting( 6, 0, 6, 5),
aSetting( 6, 30, 6, 35),
aSetting( 7, 0, 7, 5),
aSetting( 7, 30, 7, 35),
aSetting( 8, 0, 8, 5),
aSetting( 8, 30, 8, 35),
aSetting( 9, 0, 9, 5),
aSetting( 9, 30, 9, 35),
};
aSetting r2Alarms[] = {
aSetting(11, 0, 11, 2),
aSetting(11, 6, 11, 10),
};
void setup() {
pinMode(ledPinStatusDCF, OUTPUT);
pinMode(ledPin1, OUTPUT);
pinMode(Relais1, OUTPUT);
pinMode(Relais2, OUTPUT);
digitalWrite(Relais2, LOW);
//Serial.begin(9600);
DCF.Start();
setSyncProvider(RTC.get);
}
unsigned long letzterEmpfang;
unsigned long letztesBlinken;
bool blinkLed;
void loop() {
static byte prevMinute = 99;
unsigned long topLoop = millis();
time_t DCFtime = DCF.getTime();
if (DCFtime != 0) {
tmElements_t tm;
breakTime(DCFtime, tm);
if (RTC.write(tm)) {
//Serial.println("RTC erfolgreich gesetzt!"); //DCF77 Empfang gut und RTC gesetzt -> LED leuchtet für 45 Sekunden
//digitalClockDisplay(DCFtime);
letzterEmpfang = topLoop;
blinkLed = false;
digitalWrite(ledPinStatusDCF, HIGH);
}
} else {
blinkLed = true;
digitalWrite(ledPinStatusDCF, HIGH);
}
if (blinkLed) {
if (topLoop - letztesBlinken >= 250) {
digitalWrite(ledPinStatusDCF, !digitalRead(ledPinStatusDCF));
letztesBlinken = topLoop;
}
} else if (topLoop - letzterEmpfang > 45000) {
digitalWrite(ledPinStatusDCF, LOW);
}
time_t t = now();
byte aktMinute = minute(t); //aktuelle Minute setzen
byte aktStunde = hour(t); //aktuelle Stunde setzen
if (aktMinute != prevMinute) {
prevMinute = aktMinute;
for (byte idx = 0; idx < sizeof(r1Alarms) / sizeof(r1Alarms[0]); idx++) {
if (r1Alarms[idx].isOn(aktStunde, aktMinute)) {
digitalWrite(ledPin1, HIGH);
digitalWrite(Relais1, HIGH);
break;
}
if (r1Alarms[idx].isOff(aktStunde, aktMinute)) {
digitalWrite(ledPin1, LOW);
digitalWrite(Relais1, LOW);
break;
}
}
for (byte idx = 0; idx < sizeof(r2Alarms) / sizeof(r2Alarms[0]); idx++) {
if (r1Alarms[idx].isOn(aktStunde, aktMinute)) {
digitalWrite(ledPin2, HIGH);
digitalWrite(Relais2, HIGH);
break;
}
if (r1Alarms[idx].isOff(aktStunde, aktMinute)) {
digitalWrite(ledPin2, LOW);
digitalWrite(Relais2, LOW);
break;
}
}
}
}
Hat jemand hierfür eine Idee um dieses Problem zu lösen? Ich habe auch vor eine DS3231 mit einem DCF77 Empfänger zu synchronisieren.
Grüße und Danke schön vorab..
Stefan