Come regolare anno - Modulo Tiny RTC i2c module

Ciao ragazzi, stamane mi è arrivato il suddetto modulo e subito l’ho provato con questo sketch:

#include <Wire.h>
#include "RTClib.h"
RTC_DS1307 RTC;

void setup () {
    Serial.begin(9600);
    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(); 
    delay(1000);
}

L’ide compila ed esegue lo sketch senza problemi, solo che aprendo la stampa seriale leggo che l’anno visualizzato è il 2000. Il resto dei dati sono corretti. Come lo regolo al 2016?

I cablaggi che ho fatto sono +5 e gnd e poi pin SDA e pin SCL del modulo, rispettivamente ai pin A4 e A5 di Arduino uno.

Grazie 1000!

DateTime now = RTC.now(); // carica nella variabile now i valori di data e orario del RTC

RTC.adjust(DateTime(YYYY, MM, DD, hh, mm, now.second())); // set the RTC

Sostituisci YYYY con l'anno (es. 2016), MM con il mese (4), DD con il giorno(30), hh con le ore, mm con i minuti.

Nota che si può anche usare anche la variabile now, usata in questo esempio per i soli secondi.

Fatto. Grazie 1000!

Sai per caso se per il campo anno posso usare la versione YY anzichè YYYY, ho un display da 8 caratteri.

La variabile deve essere nel formato YYYY, ma la puoi visualizzare come YY:

YY = now.year() - 2000;

io ho risolto con

yy = now.year() % 100;

così funziona anche per il 1916 o per il 2116

Grandi...Provo subito!

Dilemma del 1° Maggio. Buon 1° Maggio a tutti:

ma per fare il modo che il modulo RTC al quale ho applicato la batteria tampone, mi tenga l'orario anche senza che Arduino si alimentato, devo usare questa stringa:

RTC.adjust(DateTime(now.year(), now.month(),now.day(), now.hour(), now.minute(), now.second()));

oppure:

RTC.adjust(DateTime(YYYY, MM, DD, hh, mm, now.second()));

no perchè pensavo di aver risolto con la seconda stringa, poi stamane accendo il progetto e dal display leggo un orario sballato.

Grazie

Ma infatti tutto quel che hai fatto è inutile, lo sketch che hai messo nel primo post basta e avanza a impostare ora e data completi, da lì l'RTC dovrebbe poi mantenerli, se la batteria è carica e se funziona correttamente.

Fai attenzione che il modulo Tiny a me ha dato problemi sul porta batteria: prova a reinserirla.

Inoltre, spesso ed erroneamente viene usata una normale Litio non ricaricabile 2032, ma si dovrebbe usare la più costosa LiIon ricaricabile.

O si cyberhs, ci ho inciampato: andrebbe usata la LIR2303!

vedi post #21

cacchio io sto usando una CR2032 , dite che è quello?

Beh dai non è che ti prende fuoco la casa :slight_smile:

Comunque nel post che ho citato c'è anche come modificare il tinyRTC per utilizzare correttamente la cr2032

Ciaoo

Si stavo leggendo...
Grazie cam

Bho sto modulo mi sta tirando scemo....Non va, ad ogni riavvio la data non si aggiorna. Adesso ho su la batteria giusta la LIR 2032, che ho fatto ricaricare tutta una notte. C'è qualche contatto noto che da noie? Qualche prova da fare prima di fargli prendere la via dell'indifferenziato?

Intanto controlla con un tester la tensione della sola batteria e poi quella del modulo (scollegato da Arduino) connettendo i puntali sui pin BAT e GND.

La batteria da sola dovrebbe avere una tensione tra 3.6V e 4.2V, mentre il modulo dovrebbe segnare una tensione tra 2.69V e 3.13V dovuta al partitore resistivo 510k + 1M5.

Se tutto è a posto, il modulo dovrebbe mantenere l'orario.

Resterebbe il dubbio sullo sketch: faccelo vedere.

Quello a inizio topic. Per le prove vado a farle...

Grazie 1000

Intanto potresti fare una prova semplice: togli

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

e programma.

Dopodichè verifica che togliendo alimentazione per mezz'ora ti segni mezz'ora in più.
Come simpaticamente dici: "mi ha tirato scemo pure a me" e l'ho sistemato mettendo la regolazione dell'ora da pulsanti (preparati che prima o poi tocca anche a te :wink: )

cam9500:
Intanto potresti fare una prova semplice: togli

  if (! RTC.isrunning()) {[color=#222222][/color]

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



e programma.

Dopodichè verifica che togliendo alimentazione per mezz'ora ti segni mezz'ora in più. 
Come simpaticamente dici: "mi ha tirato scemo pure a me" e l'ho sistemato mettendo la regolazione dell'ora da pulsanti (preparati che prima o poi tocca anche a te ;) )

Ok, adesso va. Erano due cose, una saldatura sul portabatteria e la riga dello sketch che mi hai indicato che ho commentato.

Grazie mille Nicola

Modulo I2C Tiny RTC DS1307:

Ragazzi voglio riesumare questo modulo,che tempo fa ho sostituito con il migliore DS3231, per non mandarlo in discarica e utilizzarlo con una batteria CR2032 (che ho già) e non comprare una LIR2032. Qualcuno ha una foto con le procedure da seguire per eliminare il famoso circuito di ricarica di questo modulo?

In rete trovo tanti metodi, chiedo a voi perchè se qualcuno lo ha già fatto e funziona bene seguo a ruota.

Grazie

Se fossi in te, lascerei perdere.

Vuoi modificare una scheda solo perché non hai a disposizione una LIR2032?

Sono componenti SMD facili da rimuovere con un saldatore a punta fine, ma non altrettanto a rimontarli.

Puoi utilizzare la comune CR2032, l'importante è che non sia scarica.