ich bin gerade dabei mir die Pong Clock nachzubauen. Die Verkabelung und den Sketch habe ich hier entnommen: http://123led.wordpress.com/about/
Ich kann bisher mir das Pong-Spiel anschauen (immer 00:00), ins Menü gehen und alles machen. Stelle ich nun die Uhr ein, so wird diese nicht gespeichert. Ich benutze das RTC I2C DS1307 Real Time Clock Modul .
Nachdem ich die Uhrzeit eingestellt habe, erscheint folgendes im Display:
Hallo!
Also ich kann dir zwar bei deinem Problem nicht helfen, aber was mir auffällt ist das in dem Video auf der verlinkten Seite die Uhrzeit immer bei 16:46 Uhr steht obwohl das Video an sich 1min 50sek dauert.
Hast Du die Uhr richtig angeschlossen ?
In dem Schaltbild aus Deinem Link sind die Anschlüsse des ICs nicht in der Reihenfolge gezeichnet wie sie real am IC sind.
wichtig:
Arduino 0023
richtige library
ich habe mir für das Pong Projekt ein eigenes Arduino 0023 reserviert und eingerichtet.
Habe gerade mal geschaut, aber dein Link enthält genau die gleichen Daten (sowohl der Schaltplan als auch der Code). Habe es nun mal auf dem Mega probiert. Dort ist es genau das gleiche.
Heute kamen die Einzelteile: 1 x DS1307, 1 x Uhrenquarz 32.768 khz 12,5pf und schwuppdiwupp aufgesteckt. Auch mit dieser Schaltung habe ich das gleiche Problem.
So habe ich meine IDE Verwaltung aufgebaut:
Hauptordner mit 0023-IDE
--> eine Ebene darunter die Libraries und auf gleicher Ebene meinen Projects-Ordnder.
Verifiy und Upload klappt ohne eine Meldung.
Was nun? Gibt es einen anderen Sketch zum Testen des DS1307?
Gibt es einen anderen Sketch zum Testen des DS1307?
Für DS1307 gibt es ca. 100 Libraries.
Mit Wire allein kannst du auch den Uhrenspeicher direkt ansprechen, zum Sehen ob der DS1307 richtig angeschlossen ist.
Schau dir die Library deiner Wahl an und sieh, wie
die Uhr gestartet wird
Sekunden gelesen werden
Etwas ähnliches solltest du finden:
#include <Wire.h>
#define DS1307_ADDRESS 0x68
Wire.beginTransmission(DS1307_ADDRESS);
Wire.write((int)0);
Wire.endTransmission();
Wire.requestFrom(DS1307_ADDRESS, 1);
uint8_t ss = Wire.read();
if (ss>>7) isrunning = false;
else isrunning = true;
byte bcdSeconds = ss & 0x7F;
byte bcdMinute = 0x59 ; // Minute 59
Wire.beginTransmission(DS1307_ADDRESS);
Wire.write( (int) 0);
Wire.write(bcdSeconds); // set time ( second without bit 0x80 starts clock )
Wire.write(bcdMinute);
Wire.endTransmission();