Go Down

Topic: RTC shield impostazione data/ ora (Read 8907 times) previous topic - next topic

MasterPi


si i pin 4 e 5 per usarli bisogna saldare le piazzole sotto la shield. non saldandole usa i pin sda scl presenti su arduino uno rev3. quindi non sono disturbi sui pin dato che quelli li usa solo la shield. provo a cambiare i componenti....

I pin sda e scl  presenti su arduino sono proprio i pin A4 e A5 rispettivamente! Non mi sembra di aver mai sentito nulla a riguardo dei pin D5 e D6 usati nell'i2c.... Hai provato ad utilizzare invece i "classici" pin?

lucadh

ho capito qualcosa di più. il problema non riguarda la rtc shield in quanto lei funziona. io sto guardando l'ora su un lcd. ma ho notato questo. ad esempio: 13:40:20 arriva fino a 13:40:59 poi fa 13:41:9 poi i secondi fanno 9-29-39-49-59-69-79-89-99  e riprende a fare i minuti 41 in modo regolare quindi 1-2-3..59. non so se mi riesco a spiegare bene. durante questo pasticcio è solo sull ' lcd l'errore, sulla seriale l'ora è giusta...forse devo rivedere l'intero sketch... inizio a non capirci più nulla!!!!! scusatemi!

gpb01


Luca ... magari non c'entra nulla, ma ... prima di riscrivere sul LCD, pulisci la riga su cui scrivi (es. con tutta una serie di spazi) ?

Guglielmo
Search is Your friend ... or I am Your enemy !

MasterPi


ho capito qualcosa di più. il problema non riguarda la rtc shield in quanto lei funziona. io sto guardando l'ora su un lcd. ma ho notato questo. ad esempio: 13:40:20 arriva fino a 13:40:59 poi fa 13:41:9 poi i secondi fanno 9-29-39-49-59-69-79-89-99  e riprende a fare i minuti 41 in modo regolare quindi 1-2-3..59. non so se mi riesco a spiegare bene. durante questo pasticcio è solo sull ' lcd l'errore, sulla seriale l'ora è giusta...forse devo rivedere l'intero sketch... inizio a non capirci più nulla!!!!! scusatemi!

E allora così la faccenda cambia... Dagli sketch che ci hai fornito in precedenza stampavi l'ora sul serial monitor, ora ci stai dicendo che la guardi su un lcd. Allora facciamo un punto della situaziione e fai questa prova per capire se il problema è effettivamente la comunicazione con l'lcd: Carica su arduino  l'esempio softrtc e vedi se ti stampa correttamente l'ora sull'lcd. Se funziona allora il problema temo sia ancora lo shield (ma da quanto ho capito se stampa l'ora correttamente sulla seriale ciò non dovrebbe accadere), se invece lo sketch non va il problema risiede nella comunicazione con l'lcd o per colpa di collegamenti sbagliati o interferenze o falsi contatti o per colpa del software e in quel caso avremmo bisogno del codice che utilizzi  :)

leo72


prima di riscrivere sul LCD, pulisci la riga su cui scrivi (es. con tutta una serie di spazi) ?

Quoto.
GLi LCD non sono come gli schermi dei PC con la gestione dell'area di testo. Se scrivi:
BUONASERA e poi scrivi CIAO subito sopra, vedrai alla fine CIAOASERA perché la parte di frase non sovrascritta resta nella RAM del display.

lucavigna

ho capito qualcosa di più. il problema non riguarda la rtc shield in quanto lei funziona. io sto guardando l'ora su un lcd. ma ho notato questo. ad esempio: 13:40:20 arriva fino a 13:40:59 poi fa 13:41:9 poi i secondi fanno 9-29-39-49-59-69-79-89-99  e riprende a fare i minuti 41 in modo regolare quindi 1-2-3..59. non so se mi riesco a spiegare bene. durante questo pasticcio è solo sull ' lcd l'errore, sulla seriale l'ora è giusta...forse devo rivedere l'intero sketch... inizio a non capirci più nulla!!!!! scusatemi!
scusate se riporto a galla questa discussione
si poi risolto questo problema?
xke anche io sto avendo lo stesso problema!
ieri sera alle 20.59 l'orario è passato alle 21.09 e poi 21.19 e cosi via...
il problema dove risiede?

ultimo_53

scusate se riporto a galla questa discussione
si poi risolto questo problema?
xke anche io sto avendo lo stesso problema!
ieri sera alle 20.59 l'orario è passato alle 21.09 e poi 21.19 e cosi via...
il problema dove risiede?
Il problema, come giustamente ipotizzato da Guglielmo, sta nel fatto che rimane sporca l'area di stampa del display. Quando stampi 59 secondi usi 2 carattere mentre quando passi a stampare da 0 a 9 secondi ne usi uno solo e il secondo carattere non viene cancellato. Quindi avrai:

59, 19 (invece di 1), 29 (invece di 2) e così via.

Per risolvere ha due strade alternative:
1 - devi pulire l'area di stampa prima di ogni nuova visualizzazione
2 - devi formattare l'output con la funzione "sprintf()" in modo da avere sempre 2 caratteri in stampa (01, 02, ............., 10, .............. 59)

Io personalmente ho usato la soluzione 2 formattando, oltre ai secondi, anche ore e minuti.

Attilio

lucavigna

#37
Mar 16, 2015, 03:34 pm Last Edit: Mar 16, 2015, 03:51 pm by lucavigna
Attilio grazie della risposta!
ho fatto un po di ruicerche online e ho trovato un codice semplice che potevo sistemare a mio modo.
l'ho modificato perche vi era l'utilizzo del pin 6 con un tasto per impostare l'ora, ma ho notato che il mio la sincronizza in automatico quando compilo, cosi ho tolto un po di codice ed è questo ora:
Code: [Select]
#include <Wire.h>
    #include <RTClib.h>
    #include <LiquidCrystal_I2C.h>
    
    char buffer1[20];
    char buffer2[20];
    
    RTC_DS1307 RTC;
    LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);  // indirizzo 0x27 seriale del i2c

 
    void setup () {
 
      Wire.begin();
      RTC.begin();
      lcd.begin(20, 4);
      
     if (! RTC.isrunning()) {
        RTC.adjust(DateTime(__DATE__, __TIME__));
      }
    }
    void loop () {
 
      DateTime now = RTC.now();
  
      sprintf(buffer1,  "%02d:%02d:%02d", now.hour(), now.minute(), now.second());
      lcd.setCursor(0,0);
      lcd.print( buffer1 );
      sprintf(buffer2,  "%02d/%02d/%d", now.day(), now.month(), now.year());
      lcd.setCursor(0,1);
      lcd.print( buffer2 );
      delay(100);
    }



al momento sta andando e funziona bene!
che dici?


un'altra cosa che mi piacerebbe sapere è come gestisce la ricarica della batteria  :smiley-neutral:
nel senso, misurando con un tester rilevo una corrente di 4V che è giusta per caricare la batteria LIR2032 da 3.6 V
ma come fa a gestire la ricarica? a staccarla quando è completamente carica x esempio? non c'è il rischio che vada in sovraccarico?  :smiley-neutral:  :smiley-confuse:
io ho saldato al posto della costosissima LIR2032 una batteria di quelle tampone ricaricabili che si usano nei circuiti ..da 3.6V 80 mah ricaricabile
questa piu o meno :

ultimo_53

Ciao,

lo sketch mi sembra corretto, di fatto formatti i dati prima di inviarli al display e quindi stampi sempre 2 caratteri per ore, minuti e secondi, eliminando così il problema della "sovraimpressione".

L'istruzione RTC.adjust(DateTime(__DATE__, __TIME__)) inizializza l'RTC con data e ora di compilazione dello sketch, di fatto lo sincronizza con il PC. Dopo la prima inizializzazione commenta l'istruzione e ricarica lo sketch, l'RTC mantiene i dati corretti per conto suo e non serve reimpostarlo ogni volta.

Per quello che riguarda la batteria di backup, non mi risulta che si ricarichi. Quelle in dotazione con i moduli non sono ricaricabili, durano circa 4 o 5 anni e non penso si possano sostituire senza problemi con quella ricaricabile da te adottata.

Attilio

lucavigna

#39
Mar 16, 2015, 07:29 pm Last Edit: Mar 16, 2015, 07:34 pm by lucavigna
in effetti ora va alla grande e non perde un colpo!
rispetto all'orario del pc è indietro solo di 10 secondi
la stringa che inizializza quindi conviene toglierla? vedo che non da problemi lasciandola pero' ...cmq la tolgo e faccio le prove del caso ;)

riguardo la batteria, non era fornita..ma nella descrizione del venditore dice che viene ricaricata ed infatti monta una LIR2032 3.6V e NON la semplice CR2032 da 3V
cosi ho misurato col tester sull'alloggiamento della batteria e infatti arrivano 4volt
ho dedotto quindi che quei 4V servanoappunto per ricaricare la batteria da 3.6V
adesso sto facendo delle prove, la batteria che ho saldato era scarica e segnava 2.2v...lasciandola il pomeriggio collegata è arrivata a circa 4V, quindi si ricarica...no?

pensavo anche io avesse una batteria normale e infatti lo avrei preferito , ma questo modulo aveva la predisposizione per quella ricaricabile e nella descrizione era scritto.
nulla di male!

grazie per le info!! ;)

avrei da chiederti un altro favore Attilio, ma per non sporcare il post andando fuori tema ti posso scrivere via mp?

ultimo_53

Che modulo RTC usi?
Quelli che ho io (3) usano tutti normali pile non ricaricabili per mantenere data e ora.

Certo che mi puoi mandare un mp.
Tieni presente però che problemi e consigli è bene renderli pubblici, sia perché in questo modo il sapere della comunità cresce sia perché potresti avere più soluzioni e scegliere la più idonea.

Ciao

Attilio

lucavigna

La schedina che ho io è questa qui
 Nella descrizione parla proprio di batteria ricaricabile..

Ti ho inviato l' mp...non volevo sporcare questo post.
Domani lo provo a postare anche nel mio post vediamo se puo essere d aiuto a qualcuno.
In pratica cmq l orologio va benissimo ma durante un azione che compie arduino viene interrotta la scrittura a display per poi riprendere appena l azione finisce

doppiozero

Ciao! @lucavigna hai approfondito per caso la questione della ricarica della batteria?
ho la stessa scheda anche io e prima di prendere una LIR2032 volevo essere sicuro non esplodesse per sovraccarico  :smiley-lol:

ho anche trovato questa discussione dove viene proposta una modifica per adattare il modulo alle CR2032 ma se c'è il modo di evitare sarebbe meglio  :) altrimenti tento con la LIR e buonanotte :smiley-mr-green:
Runtime Clock Manager -- https://github.com/duezero/RCM---Runtime-Clock-Manager
GPX datalogger -- https://github.com/duezero/GPX-datalogger
AVR HV Rescue Board -- https://www.youtube.com/watch?v=EErKo0aTEio

Go Up