Moin zusammen,
ich habe mir folgende Uhr für meinen Arduino Nano gekauft: http://cgi.ebay.de/ws/eBayISAPI.dll?ViewItem&item=111089576456&ssPageName=ADME:X:AAQ:DE:1123
Leider hat der Hersteller keine Library genannt. Ich habe dann nach einigem Suchen folgende Library gefunden, die auch bei vergleichbaren Uhren verlinkt ist: http://www.sainsonic.com/zen/albums/ebay/tool_nerd/20-019-108/DFR0151.rar
Ich verwende Arduino in der Version 1.0.5.
Leider bekomme keines der Beispiele übersetzt. Kennt jemand eine lauffähige Library für die oben genannte Uhr?
Gruß und Dank
Kai
Da gibts mehrere Libs die alle recht ähnlich sind.
Ich empfehle die Time Lib:
http://playground.arduino.cc/Code/Time
http://www.pjrc.com/teensy/td_libs_Time.html
http://www.pjrc.com/teensy/td_libs_DS1307RTC.html
Da hast du eine Time Klasse die dir lokal die Zeit zählt und automatisch mit der RTC synchronisiert wenn ein Wert abgerufen wird. Zusätzlich gibt es noch die (optionale) Alarm Klasse mit der du zeitgesteuerte Funktionen implementieren kannst.
Was nicht implementiert ist ist RAM-Zugriff, aber das kannst auch selbst machen wenn du die Startadresse entsprechend änderst. Ich musste bei dieser Lib aber weniger modifizieren als bei anderen.
Du kannst auch nur die RTC Klasse nehmen wenn du etwas kleineren Code willst.
Bei mir sieht das im Setup so aus
setSyncProvider(RTC.get); // the function to get the time from the RTC
setSyncInterval(60); //time is in seconds
Dann muss ich gar nichts mehr mit der RTC machen. Wenn ich z.B. _lcd.print(day()) mache, schaut die Time Klasse nach ob das SyncInterval abgelaufen ist und synchronisiert bei Bedarf. Wenn nicht nimmt sie die lokale Zeit.
Und die Klasse ist auch mit anderen Zeitgebern kompatibel.
Leider bekomme keines der Beispiele übersetzt.
Dein Link enthält Beispiele für Arduino < 1.0
Erkennbar an der .pde Endung und daran, dass #include <WProgram.h>
vorkommt.
Das ist zwar leicht zu fixen, aber DS1307 ist DS1307, d.h. jede Library passt.
Ist in der Standard-Installation nicht schon eine RTC Library dabei ?
Ansonsten hat Serenifly dir ja schon Alternativen genannt.
Weiss übrigens jemand, warum neuerdings die China-Uhren-Module alle den I2C EEPROM Chip (AT24C32) mit drauf haben ?
4kB EEPROM sind zwar nett, aber braucht man's ?
hi,
schau mal nach ds1307new. die kann beides, uhr und eeprom.
die 1307 kannst Du auch ohne library ansprechen, beispiel ist im playground.
#include <Wire.h>
uint8_t h;
uint8_t m;
uint8_t s;
byte bcdToDec(byte val) {
return ( (val/16*10) + (val%16) );
}
void holeZeit() {
Wire.beginTransmission(0x68);
Wire.write(byte(0));
Wire.endTransmission();
Wire.requestFrom(0x68, 7);
s = bcdToDec(Wire.read() & 0x7f);
m = bcdToDec(Wire.read());
h = bcdToDec(Wire.read() & 0x3f);
h = (h % 12)*5+int((m+5)/12);
}
void setup() {
Wire.begin();
}
void loop() {
holeZeit();
}
die uhr muß aber anfangs einmal initialisiert und gestellt werden, zb mit der 1307new.
gruß stefan