Go Down

Topic: atmega328-p-pu sd + rtc (Read 486 times) previous topic - next topic

armando1966

salve a tutti
ormai le cose con arduino e i vari Ic vanno benone ,

pero'  ce una cosa che non mi torna ,
ho realizzato le basette termometro con il suo at328  + lcd  tutto funzionante
il lettore sd card dopodiche associo questo al termometro  riprogrammando il nuovo codice
per ultimo ho realizzato sempre su basetta il RTC con il 1307

faccio un passo indietro ,
lavorando con la atmega adk  collego  SCL SDA  ad arduino mega adk + la sd card ( collegata correttamente , mi restituisce l'orario corrente piu' o meno ) e cmq scrive sulla scheda sd

trasportando tutto sul solo atmega328p-pu ( cambiati  pin etc..) scrive sulla card ma l'ora e quella di default . che potrebbe essere ??
mi rimane un dubbio su questa riga ...
RTC.adjust(DateTime(__DATE__,__TIME__));   non e' che devo inserire un orario ed una data di partenza ?

allego  l'eventuale testo


Brunello

Quote
trasportando tutto sul solo atmega328p-pu ( cambiati  pin etc..) scrive sulla card ma l'ora e quella di default . che potrebbe essere ??


che devi avviare l'RTC impostando un'orario

Quote
mi rimane un dubbio su questa riga ...
RTC.adjust(DateTime(__DATE__,__TIME__));   non e' che devo inserire un orario ed una data di partenza ?


si, dovresti sostituire (__DATE__,__TIME__) con data e orario.

ma e' un modo un po' "gretto", visto che ogni vlta che riavvii ti si reimposta con quei dati

leo72

Devi controllare se l'RTC sta girando, in caso negativo imposti l'orario con uno di partenza e poi segnali all'utente che l'orologio è ripartito (es. LCD lampeggiante) oppure chiedi immediatamente all'utente di inserire l'ora esatta.

Per controllare se l'RTC sta girando alcune librerie offrono una funzione apposita. Oppure puoi anche fare un controllo su un particolare flag di un registro interno che varia a seconda dell'RTC usato. Sul DS1307 e sul PCF8563 sono diversi ma il principio è lo stesso: entrambi impostano un bit per segnalare che l'RTC si è arrestato per assenza di alimentazione.

armando1966

ciao Leo

ma inserimento manuale della data e ora avviene tramite la riga
RTC.adjust(DateTime(__DATE__,__TIME__));     ma non ho capito bene il formato 
gg/mm/AAAA,HH:MM:SS    non so se e questo.
ma tutto questo avviene se ce ide di arduino

una volta montato il 328p-pu   sulla basetta e reso indipendente dal pc e....

dando per scontato ( ma non troppo che rtc funzioni )

dovrei inserire nel codice che faccio caricare al 338p-pu  una sorta di inserimento della data e dell'orario da inserire
tramite almeno due pulsanti  (  set  +  -  per esempio)

da dove comincio ?? :(
help
a.







leo72


ciao Leo

ma inserimento manuale della data e ora avviene tramite la riga
RTC.adjust(DateTime(__DATE__,__TIME__));     ma non ho capito bene il formato 


No, questo non carica manualmente la data e l'ora, e non potrebbe visto che l'Arduino mica ha un orologio  ;)
Quelle che vedi, __DATE__ e __TIME__, sono delle costanti predefinite che in fase di compilazione vengono sostituite con la data e l'ora di compilazione dello sketch. Quindi se tu carichi ora il programma, metti l'Arduino nel cassetto e lo rispolveri fra un anno esatto, il 28/04/2014 alle 00:18, l'Arduino partirà dal 28/04/2013, ore 00:18, perché questa è l'ora e la data salvate nella Flash.

Quote

gg/mm/AAAA,HH:MM:SS    non so se e questo.
ma tutto questo avviene se ce ide di arduino

una volta montato il 328p-pu   sulla basetta e reso indipendente dal pc e....

dando per scontato ( ma non troppo che rtc funzioni )

dovrei inserire nel codice che faccio caricare al 338p-pu  una sorta di inserimento della data e dell'orario da inserire
tramite almeno due pulsanti  (  set  +  -  per esempio)

da dove comincio ?? :(
help
a.

Ci sono tanti progetti in rete, basta cercare e leggere il codice per farsi un'idea.

armando1966

OK. Grazie PeR le info leo
Buona domenica
Armando

Go Up