Fehler beim Compilieren ...

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

Entweder hast du einen falschen Sketch oder falsche Fehlermeldung gepostet.
Das passt nicht zusammen.

Guten Tag HotSystems,

Nein, ich habe den Sketch genommen den ich gepostet habe..
Was auffällt ist das Arduino auch diese Fehlermeldungen ausspuckt ..

Warning: Board ICT_Boards:avr:radinonrf8001 doesn't define a 'build.board' preference. Auto-set to: AVR_RADINONRF8001
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:radinoRF69 doesn't define a 'build.board' preference. Auto-set to: AVR_RADINORF69
Warning: Board ICT_Boards:avr:radinoWiFi doesn't define a 'build.board' preference. Auto-set to: AVR_RADINOWIFI

ich habe schon den Sketch in der Zwichenzeit etwas bearbeitet .. jetzt motzt der Compiler wegen digitalClockDisplay.. obwohl ich die time.h installiert habe...

ARNUNG: Kategorie '' in der Bibliothek UIPEthernet ist ungültig und wird auf 'Uncategorized' festgelegt
/Users/Stefan/Documents/Arduino/DCF77SETSDS3231/DCF77SETSDS3231.ino: In function 'void loop()':
DCF77SETSDS3231:91: error: 'digitalClockDisplay' was not declared in this scope
digitalClockDisplay(DCFtime);

Hast Du eine Idee ob es evtl. eine Lib. gibt die a.) DCF77 empfang ermöglicht und die es auch ermöglicht eine DS3231 mit der DCF 77 Zeit zusetzten oder synchronisieren?
Ich denke ich werde nochmals bei 0 beginnen..

Grüße Stefan

.

Update: selbst bei diesem einfachen Sketch kommt die Fehlermeldung

void setup() {
// put your setup code here, to run once:

}

void loop() {
// put your main code here, to run repeatedly:

}

Warning: Board ICT_Boards:avr:radinoCC1101 doesn't define a 'build.board' preference. Auto-set to: AVR_RADINOCC1101
Warning: Board ICT_Boards:avr:radinoWiFi doesn't define a 'build.board' preference. Auto-set to: AVR_RADINOWIFI
Warning: Board ICT_Boards:avr:radinonrf8001 doesn't define a 'build.board' preference. Auto-set to: AVR_RADINONRF8001
Warning: Board ICT_Boards:avr:radinoRF69 doesn't define a 'build.board' preference. Auto-set to: AVR_RADINORF69
Warning: Board ICT_Boards:avr:radinoRF233 doesn't define a 'build.board' preference. Auto-set to: AVR_RADINORF233
WARNUNG: Kategorie '' in der Bibliothek UIPEthernet ist ungültig und wird auf 'Uncategorized' festgelegt

Der Sketch verwendet 444 Bytes (1%) des Programmspeicherplatzes. Das Maximum sind 32.256 Bytes.
Globale Variablen verwenden 9 Bytes (0%) des dynamischen Speichers, 2.039 Bytes für lokale Variablen verbleiben. Das Maximum sind 2.048 Bytes.

Dann stimmen deine Board-Einstellungen nicht.

Welches Board verwendest du und wie sind da die Einstellungen ?

Was willst du nun damit sagen?
App schlecht programmiert für den Mac?

Ich hab auch Mac ( System Yosemite) und Arduino 1.6.12 installiert, läuft alles.

Hallo,
" Ich habe auch vor eine DS3231 mit einem DCF77 Empfänger zu synchronisieren."

Lasse es. Bei DCF und Arduino kannst Du Dich auf harte Arbeit und Ärger einstellen. Das Forum ist voll davon.
Schau lieber zu, das Du eine genaue RTC bekommst, oder synchronosiere übers Netz.
Gruß und Spaß
Andreas

@HotSystems: Ich verwende das standart Arduino Board..
Board Einstellungen in der Software: Arduino/Genuino Uno

@skorpi08: Ich habe MacOS Sierra .. vieleicht liegt da ja der Fehler

@SkobyMobil: Ich arbeite an einer Rolladensteuerrung mit einer DS3231 die über DCF77 synchronisiert werden
soll. Wenn die Sommer / Winterzeit umstellung erfolgt soll diese automatisch erfolgen.

Es müsste doch machbar sein dcf 77 Zeit mit der inn der 3231 zuvergleichen undn g.g. zu synchronisieren..
Vieleicht reicht auch eine Software Uhr dafür aus ..

Es ist so: Ich habe Timer von Busch Jäger .. die sind ehrlich Schlecht. Wenn der Strom ausfällt aus irgendwelchen Gründen dann ist die Speicherung futsch und ich renne im ganzen Haus herrum und stelle die Uhren... nicht sehr gut..

Hast du nicht zufällig vor paar Tagen bei youtube nach meinem Code gefragt :smiley:

stevie72:
@HotSystems: Ich verwende das standart Arduino Board..
Board Einstellungen in der Software: Arduino/Genoino Uno

Lt. Fehlerbericht hast du aber ein anderes Board eingestellt oder die IDE will ein anderes verwenden.

Die Verwendung einer DCF77 ist sehr kritisch und muss genau durchdacht werden.
Du solltest dir da mal die zahlreichen Threads dazu durchlesen.

Eine DS3231 ist für deine Anwendung genau genug.
Da brauchst du nicht mehr durch die Gegend laufen.
Auch da ist die Sommer/Winterzeit zu automatisieren. Funktioniert bei mir problemlos mit der DS3231.

@skorpi08: Kann schon sein .. Würdest Du mir den Deinen Code mal schicken?
email: stevie72@gmx.de

Ich möchte nochmals die Arduino Software testen mit einem Code der funktioniert bevor ich diese neu aufsetzte ..

stevie72:
Ich möchte nochmals die Arduino Software testen mit einem Code der funktioniert bevor ich diese neu aufsetzte ..

Was macht das für einen Sinn, wenn schon ein leerer Sketch Fehler schmeißt.

Da ist in der Board-Auswertung etwas schief, also runter damit.

:confused: Du hast recht ... ich schmeisse die Software runter und bügel sie neu drauf

Beim Mac macht es genau 0% Sinn dieselbe App neu zu laden und auszuführen.
Beim Windows würd ichs noch verstehen.

Ich hab keine Programme/Bilder/Videos etc, Festplatte ist kaputt. Der Forensiker der sich melden wollte, hat sich nicht mehr gemeldet.

nein - nicht dieselbe Software ... eine etwas ältere Version werde ich versuchen

News Update: Ich habe gerade mal die Version 1.0.6 von Arduino installiert und siehe da es klappt damit
Kein Fehler beim Kompileren. Ich gehe davon mal aus das es an meiner MacOS Sierra liegt..
Jedenfalls mit dieser alten Version von arduino kommen keine Fehlermeldungen.

1.6.8 würd ich erst probieren, wenns nicht geht dann die 1.5

stevie72:
News Update: Ich habe gerade mal die Version 1.0.6 von Arduino installiert und siehe da es klappt damit
Kein Fehler beim Kompileren. Ich gehe davon mal aus das es an meiner MacOS Sierra liegt..
Jedenfalls mit dieser alten Version von arduino kommen keine Fehlermeldungen.

Na dann ist doch das Problem erkannt.

Ich würde auch, wie skorpi08 schreibt, eine neuere Version einsetzen, dann gibt es weniger Probleme mit aktuellen Libraries.

Die Version 1.6 klappt nicht ... Fehler Meldungen
Die Version 1.5.8 klappt ! Keine Fehlermeldung