DS1307 - problema lettura orario

Ciao a tutti, sono alle prese con un modulo ds1307, precisamente questo:
http://www.ebay.it/itm/Arduino-DS1307-RTC-KIT-PCB-Real-Time-Clock-For-PIC-ARM-AVR-DSP-/280917352316?pt=Componenti_elettronici_attivi&hash=item4167fa9f7c#ht_2272wt_1400

Come IDE sto utilizzando il 0022 e la libreria è DS1307.h

Ho caricato lo sketch di esempio, questo:

/*Reads the value from a Real Time Clock (RTC) DS1307 and displays it in the serial monitor
 *
 *Created by D. Sjunnesson 1scale1.com d.sjunnesson (at) 1scale1.com
 *
 *Created with combined information from 
 *http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1180908809
 *http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1191209057
 *
 *
 *Big credit to  mattt (please contact me for a more correct name...) from the Arduino forum 
 *which has written the main part of the library which I have modified
 *
 */

#include <WProgram.h>
#include <Wire.h>
#include <DS1307.h> // written by  mattt on the Arduino forum and modified by D. Sjunnesson

void setup()
{
  Serial.begin(9600);

  RTC.stop();
  RTC.set(DS1307_SEC,1);        //set the seconds
  RTC.set(DS1307_MIN,23);     //set the minutes
  RTC.set(DS1307_HR,12);       //set the hours
  RTC.set(DS1307_DOW,4);       //set the day of the week
  RTC.set(DS1307_DATE,5);       //set the date
  RTC.set(DS1307_MTH,3);        //set the month
  RTC.set(DS1307_YR,9);         //set the year
  RTC.start();

}

void loop()
{

  Serial.print(RTC.get(DS1307_HR,true)); //read the hour and also update all the values by pushing in true
  Serial.print(":");
  Serial.print(RTC.get(DS1307_MIN,true));//read minutes without update (false)
  Serial.print(":");
  Serial.print(RTC.get(DS1307_SEC,true));//read seconds
  Serial.print("      ");                 // some space for a more happy life
  Serial.print(RTC.get(DS1307_DATE,true));//read date
  Serial.print("/");
  Serial.print(RTC.get(DS1307_MTH,true));//read month
  Serial.print("/");
  Serial.print(RTC.get(DS1307_YR,true)); //read year 
  Serial.println();

  delay(1000);

}

Il problema è che lo sketch dovrebbe scrivermi su seriale l'ora corrente partendo da quella impostata nello sketch giusto?

Bene aprendo la comunicazione seriale ecco quello che mi esce:

0:0:0     0/0/2000
0:0:0     0/0/2000
0:0:0     0/0/2000
0:0:0     0/0/2000
0:0:0     0/0/2000
0:0:0     0/0/2000
0:0:0     0/0/2000
...

e così sempre, è come se ogni secondo che conta non riuscisse a portare il conto. Come è possibile?

Una cosa xò nel modulo RTC il pin denominato "SQW" dove va collegato, su altri schemi è come se rimane scollegato è giusto così?

Grazie a tutti!

Hai invertito SCL e SDA?
Il pin SQW é un uscita con un segnale di 1Hz. Non va collegato se non ne hai bisogno.
Ciao Uwe

Come ha detto Uwe, controlla i collegamenti.
Prova anche questa lib:

E guarda se il metodo isrunning() ti restituisce l'orologio in funzione oppure no.

Ok, con l'IDE 0022 e la libreria RTClib caricando lo sketch di esempio ds1307 la seriale mi restituisce l'ora come si deve! :slight_smile:
La domanda quindi è: per quale motivo questa libreria funziona e quella che vi ho detto prima continua a darmi quell'errore?

Grazie mille!

Questo non so dirtelo perché non ho esaminato la lib che hai indicato tu ma anche a me è successo in passato che con una lib differente dalla RTClib avessi problemi a comunicare con un DS1307.

Così su 2 piedi mi viene in mente la vetustà della libreria stessa, magari è stata scritta per una versione molto vecchia dell'IDE: l'IDE, come hai visto, viene aggiornata periodicamente, se sono stati cambiati dei metodi o altro che la lib usava, questo ne ha potuto inficiare le funzionalità.

Comunque se la RTClib ti funziona, lascia perdere l'altra ed usa questa :wink: