RTC DS1307

Moin,

ich hab mir dieses RTC modul gekauft

und hab schon Probleme mit der Library. Offensichtlich scheint die nicht mehr auf stand zu sein. Sobald ich das sample lade und es kompilieren will, bekomme ich Fehlermeldungen.

Hat hier jemand ne Lösung parat?

ps.: Hab beim einsetzen der Knopfzelle wohl ein kurzschluss verursacht. Kann davon mein Modul kaputt gegangen sein?

Grüße,

Christian

Poste mal die Fehlermeldungen. Kann noch ein Fehler sein von der umsztellungen der Arduino IDE auf 1.X.
Der Code wäre auch schön einzusehen

Man reiche mir meine Kristllkugel... :smiley: Welche Fehlermeldung kommt denn?

The WProgram.h file, which provides declarations for the Arduino API,
has been renamed to Arduino.h. To create a library that will work in
both Arduino 0022 and Arduino 1.0, you can use an #ifdef that checks
for the ARDUINO constant, which was 22 and is now 100. For example:

#if defined(ARDUINO) && ARDUINO >= 100
#include "Arduino.h"
#else
#include "WProgram.h"
#endif

Sollte die RTC-Bibliothek veraltet sein, also auf dem Stand der Arduino-IDE 0022, hilft der Eintrag dieser Zeilen weiter.

Hi,

sorry, hier die notwendigen Infos.

Code:

#include <WProgram.h>
#include <Wire.h>
#include <DS1307.h>

int rtc[7];
int ledPin =  13;
void setup()
{
  DDRC|=_BV(2) |_BV(3);  // POWER:Vcc Gnd
  PORTC |=_BV(3);  // VCC PINC3
  pinMode(ledPin, OUTPUT);  
  Serial.begin(9600);

  RTC.stop();
  RTC.set(DS1307_SEC,1);
  RTC.set(DS1307_MIN,57);
  RTC.set(DS1307_HR,17);
  RTC.set(DS1307_DOW,2);
  RTC.set(DS1307_DATE,18);
  RTC.set(DS1307_MTH,1);
  RTC.set(DS1307_YR,10);
  RTC.start();
}

void loop()
{
  RTC.get(rtc,true);

  for(int i=0; i<7; i++)
  {
    Serial.print(rtc[i]);
    Serial.print(" ");
  }
  Serial.println();
	digitalWrite(ledPin, HIGH); 
	delay(500);
	digitalWrite(ledPin, LOW);
	delay(500);
}

Fehlermeldung:

In file included from DS1307.cpp:3:
E:\arduino\arduino-1.0.1-windows\arduino-1.0.1\libraries\DS1307/DS1307.h:47: error: 'boolean' has not been declared
E:\arduino\arduino-1.0.1-windows\arduino-1.0.1\libraries\DS1307/DS1307.h:48: error: 'boolean' has not been declared
E:\arduino\arduino-1.0.1-windows\arduino-1.0.1\libraries\DS1307/DS1307.h:55: error: 'byte' does not name a type

liebe Grße,

Christian

Hallo Christian,
die Fehlermeldung hängt mit arduino 1.0 zusammen,
unter arduino 023 gibt es keinen Fehler.

pedapan Ersetze in Deinem sketch
#include <WProgram.h>
mit
#include <Arduino.h>
dann funktioniert er mit IDe 1.x (aber nicht mit älteren Versionen).
grüße Uwe

Moin,

vielen danke für die Antworten.

Leider hat der Austausch von WProgram zu Arduino nicht zum Erfolg geführt jedoch neue Fehlermeldungen generiert. Schaut selbst:

In file included from E:\arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/Print.h:26,
from E:\arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/Stream.h:26,
from E:\arduino\arduino-1.0.1-windows\arduino-1.0.1\libraries\Wire/../Wire/Wire.h:26,
from E:\arduino\arduino-1.0.1-windows\arduino-1.0.1\libraries\DS1307\DS1307.cpp:2:
E:\arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/WString.h:116: error: declaration of C function 'StringSumHelper& operator+(const StringSumHelper&, const char*)' conflicts with
E:\arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/WString.h:115: error: previous declaration 'StringSumHelper& operator+(const StringSumHelper&, const String&)' here
E:\arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/WString.h:117: error: declaration of C function 'StringSumHelper& operator+(const StringSumHelper&, char)' conflicts with
E:\arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/WString.h:116: error: previous declaration 'StringSumHelper& operator+(const StringSumHelper&, const char*)' here
E:\arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/WString.h:118: error: declaration of C function 'StringSumHelper& operator+(const StringSumHelper&, unsigned char)' conflicts with
E:\arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/WString.h:117: error: previous declaration 'StringSumHelper& operator+(const StringSumHelper&, char)' here
E:\arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/WString.h:119: error: declaration of C function 'StringSumHelper& operator+(const StringSumHelper&, int)' conflicts with
E:\arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/WString.h:118: error: previous declaration 'StringSumHelper& operator+(const StringSumHelper&, unsigned char)' here
E:\arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/WString.h:120: error: declaration of C function 'StringSumHelper& operator+(const StringSumHelper&, unsigned int)' conflicts with
E:\arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/WString.h:119: error: previous declaration 'StringSumHelper& operator+(const StringSumHelper&, int)' here
E:\arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/WString.h:121: error: declaration of C function 'StringSumHelper& operator+(const StringSumHelper&, long int)' conflicts with
E:\arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/WString.h:120: error: previous declaration 'StringSumHelper& operator+(const StringSumHelper&, unsigned int)' here
E:\arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/WString.h:122: error: declaration of C function 'StringSumHelper& operator+(const StringSumHelper&, long unsigned int)' conflicts with
E:\arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware\arduino\cores\arduino/WString.h:121: error: previous declaration 'StringSumHelper& operator+(const StringSumHelper&, long int)' here
In file included from E:\arduino\arduino-1.0.1-windows\arduino-1.0.1\libraries\DS1307\DS1307.cpp:4:
E:\arduino\arduino-1.0.1-windows\arduino-1.0.1\libraries\DS1307/DS1307.h:47: error: 'boolean' has not been declared
E:\arduino\arduino-1.0.1-windows\arduino-1.0.1\libraries\DS1307/DS1307.h:48: error: 'boolean' has not been declared
E:\arduino\arduino-1.0.1-windows\arduino-1.0.1\libraries\DS1307/DS1307.h:55: error: 'byte' does not name a type
E:\arduino\arduino-1.0.1-windows\arduino-1.0.1\libraries\DS1307\DS1307.cpp: In member function 'void DS1307::read()':
DS1307.pde:-1: error: 'B1101000' was not declared in this scope
DS1307.pde:-1: error: 'class TwoWire' has no member named 'send'
Seit Arduino 1.0 wurde die Funktion Wire.send() wegen der Übereinstimmung mit anderen Librarys zu Wire.write() umbenannt.
DS1307.pde:-1: error: 'rtc_bcd' was not declared in this scope
DS1307.pde:-1: error: 'class TwoWire' has no member named 'receive'
Seit Arduino 1.0 wurde die Funktion Wire.receive() wegen der Übereinstimmung mit anderen Librarys zu Wire.read() umbenannt.
E:\arduino\arduino-1.0.1-windows\arduino-1.0.1\libraries\DS1307\DS1307.cpp: In member function 'void DS1307::save()':
DS1307.pde:-1: error: 'B1101000' was not declared in this scope
DS1307.pde:-1: error: 'class TwoWire' has no member named 'send'
Seit Arduino 1.0 wurde die Funktion Wire.send() wegen der Übereinstimmung mit anderen Librarys zu Wire.write() umbenannt.
DS1307.pde:-1: error: 'class TwoWire' has no member named 'send'
Seit Arduino 1.0 wurde die Funktion Wire.send() wegen der Übereinstimmung mit anderen Librarys zu Wire.write() umbenannt.
DS1307.pde:-1: error: 'rtc_bcd' was not declared in this scope
E:\arduino\arduino-1.0.1-windows\arduino-1.0.1\libraries\DS1307\DS1307.cpp: At global scope:
DS1307.pde:-1: error: 'boolean' has not been declared
DS1307.pde:-1: error: 'boolean' has not been declared
E:\arduino\arduino-1.0.1-windows\arduino-1.0.1\libraries\DS1307\DS1307.cpp: In member function 'int DS1307::get(int, int)':
DS1307.pde:-1: error: 'rtc_bcd' was not declared in this scope
DS1307.pde:-1: error: 'B01110000' was not declared in this scope
DS1307.pde:-1: error: 'B00001111' was not declared in this scope
DS1307.pde:-1: error: 'B00110000' was not declared in this scope
DS1307.pde:-1: error: 'B00000111' was not declared in this scope
DS1307.pde:-1: error: 'B11110000' was not declared in this scope
E:\arduino\arduino-1.0.1-windows\arduino-1.0.1\libraries\DS1307\DS1307.cpp: In member function 'void DS1307::set(int, int)':
DS1307.pde:-1: error: 'rtc_bcd' was not declared in this scope
DS1307.pde:-1: error: 'B10000000' was not declared in this scope
DS1307.pde:-1: error: 'rtc_bcd' was not declared in this scope
DS1307.pde:-1: error: 'rtc_bcd' was not declared in this scope
DS1307.pde:-1: error: 'rtc_bcd' was not declared in this scope
DS1307.pde:-1: error: 'rtc_bcd' was not declared in this scope
DS1307.pde:-1: error: 'rtc_bcd' was not declared in this scope
DS1307.pde:-1: error: 'rtc_bcd' was not declared in this scope
E:\arduino\arduino-1.0.1-windows\arduino-1.0.1\libraries\DS1307\DS1307.cpp: In member function 'void DS1307::stop()':
DS1307.pde:-1: error: 'rtc_bcd' was not declared in this scope
DS1307.pde:-1: error: 'B10000000' was not declared in this scope
E:\arduino\arduino-1.0.1-windows\arduino-1.0.1\libraries\DS1307\DS1307.cpp: In member function 'void DS1307::start()':
DS1307.pde:-1: error: 'rtc_bcd' was not declared in this scope

Jemand ne Idee?

Gruß,

Christian

Hast Du schon einmal ausprobiert ob dein Programm mit der Arduino IDE 023 funktioniert ?

Wenn ja dann würde ich in deinem Fall diese Arduino IDE benutzen !!!

Also war das der falsche Ratschlag.
Die Fehler, die Du erhalten hast, sind darauf zurückzuführen, daß die Bibiothek Arduino.h 2 mal inkludiert wird.

In file included from DS1307.cpp:3:
E:\arduino\arduino-1.0.1-windows\arduino-1.0.1\libraries\DS1307/DS1307.h:47: error: 'boolean' has not been declared
E:\arduino\arduino-1.0.1-windows\arduino-1.0.1\libraries\DS1307/DS1307.h:48: error: 'boolean' has not been declared
E:\arduino\arduino-1.0.1-windows\arduino-1.0.1\libraries\DS1307/DS1307.h:55: error: 'byte' does not name a type

Diese Fehlermeldungen sind darauf zurückzuführen, daß die Keywords boolean und byte nicht deklariert werden. Diese werden in Arduino.h (IDE ab 1.0) bzw in wiring.h für ältere Versionen.

Welche Version von IDE verwendest Du?
Grüße Uwe

Welche IDE verwendest Du?

E:\arduino\arduino-1.0.1-windows ...

Ich vermute mal das er die Version 1.0.1 benutzt !

Also war das der falsche Ratschlag.

Das denke ich mal absolut nicht !

Ich hab mir als erstes die 1.0.1 IDE geladen. Grad eben habe ich auch Anraten deines Vorposters die 023 Version getestet, jedoch unterstützt diese den Leonardo offensichtlich nicht. Bin grad dabei mir die 1.0 version runter zu laden.

Hätte man zuvor erwähnt das der Arduino Leonardo benutzt wird hätte ich die Version 023 natürlich nicht empfohlen !

Tschuldige, dachte das hätte ich im Eingangspost getan. Dem war aber wohl nicht so :roll_eyes:

Welche IDE unterstützt denn den Leonardo? Nur die 1.0.1?

Soweit ich weis erschien die 1.0.1 Version ziemlich zeitgleich mit dem Leonardo !

Mit anderen Worten: Ich muss die ganzen alten librarys umschreiben oder mir ein anderen Arduino kaufen?

Besser die alten Bibiotheken umschreiben.
Gibt Dir die IDE nur die Fehler

In file included from DS1307.cpp:3:
E:\arduino\arduino-1.0.1-windows\arduino-1.0.1\libraries\DS1307/DS1307.h:47: error: 'boolean' has not been declared
E:\arduino\arduino-1.0.1-windows\arduino-1.0.1\libraries\DS1307/DS1307.h:48: error: 'boolean' has not been declared
E:\arduino\arduino-1.0.1-windows\arduino-1.0.1\libraries\DS1307/DS1307.h:55: error: 'byte' does not name a type

oder noch andere?

Grüße Uwe

Oha, na ich versuchs mal :smiley:

Hab leider nie was mit C++ gemacht, nur VB6 und bischen JAVA. Naja mal gucken wie weit ich komme...

Danke erstmal für eure Hilfe

Moin,

mit

#include <WProgram.h>

ja.

Sobald ich das auf

#include <Arduino.h>

ändere, gibts die lange Fehlerliste die ich bischen weiter ob gepostet hab.

Und warum nimmst du nicht eine RTC library die schon mit Arduino 1.0.x geht ?

Eine aktuell, simple library für DS1307 ist z.B. GitHub - adafruit/RTClib: A fork of Jeelab's fantastic RTC Arduino library

Danke, die hatte ich einfach nicht gefunden.

Scheint so als ob die librarys funktionieren, zumindest gibt es keine Fehlermeldungen.

Mit dem sketch hier

#include <Wire.h>
#include "RTClib.h"

RTC_DS1307 RTC;

void setup () {
    Serial.begin(57600);
    Wire.begin();
    RTC.begin();

  if (! RTC.isrunning()) {
    Serial.println("RTC is NOT running!");
    // following line sets the RTC to the date & time this sketch was compiled
    RTC.adjust(DateTime(__DATE__, __TIME__));
  }
}

void loop () {
    DateTime now = RTC.now();
    
    Serial.print(now.year(), DEC);
    Serial.print('/');
    Serial.print(now.month(), DEC);
    Serial.print('/');
    Serial.print(now.day(), DEC);
    Serial.print(' ');
    Serial.print(now.hour(), DEC);
    Serial.print(':');
    Serial.print(now.minute(), DEC);
    Serial.print(':');
    Serial.print(now.second(), DEC);
    Serial.println();
    
    Serial.print(" since midnight 1/1/1970 = ");
    Serial.print(now.unixtime());
    Serial.print("s = ");
    Serial.print(now.unixtime() / 86400L);
    Serial.println("d");
    
    // calculate a date which is 7 days and 30 seconds into the future
    DateTime future (now.unixtime() + 7 * 86400L + 30);
    
    Serial.print(" now + 7d + 30s: ");
    Serial.print(future.year(), DEC);
    Serial.print('/');
    Serial.print(future.month(), DEC);
    Serial.print('/');
    Serial.print(future.day(), DEC);
    Serial.print(' ');
    Serial.print(future.hour(), DEC);
    Serial.print(':');
    Serial.print(future.minute(), DEC);
    Serial.print(':');
    Serial.print(future.second(), DEC);
    Serial.println();
    
    Serial.println();
    delay(3000);
}

Bekomme ich immer das Ergebniss

2165/165/165 165:165:85
since midnight 1/1/1970 = 2100964689s = 24316d
now + 7d + 30s: 2036/8/5 17:18:39

Ich muss dazu sagen das ich das RTC modul erst falsch angeschlossen hab. Ich hatte die Verbindung zum Arduino über die P2 pins hergestellt.

![](http://E:\dropbox\Dropbox\Camera Uploads\2012-08-31 08.)

Kann ich mir damit vielleicht meine RTC zerstört haben?

Grüße,

Christian