Bom dia, esta acontecendo algo estranho com os meus modulos RTC. Já comprei 3 porem toda vez que desligo eles da placa do arduino não consigo mais ligar, já tentei de varias formas sem sucesso até de placa do arduino já troquei. Sempe aparece a menssagem RTC is not runig. O que sera que esta acontecedo ? sera que estao queimando ?
Sem indicares quais os módulos, como estás a interligar e que código estás a utilizar... a única coisa que consigo dizer é que provavelmente algo está mal.
Coloca aqui mais informacões sobre o que referi em cima e certamente que eu ou alguém saberá dizer o que se passa.
Boa noite bubulindo, obrigado pela atenção, apenas dois modulos estao conectados ao arduino o mudulo de LCD e o RTC .
o RTC esta conectado assim: RTC Arduino
GND --> GND
VCC --> 5V
SDA --> A4
SCL --> A5
if (RTC.isrunning()) {
RTC.adjust(DateTime(DATE, TIME));
Serial.println("Data e hora ajustada com sucesso!");
}
else{
Serial.println("RTC is NOT running!");
}
}
#include <Wire.h>
#include "RTClib.h"
RTC_DS1307 RTC;
void setup () {
Serial.begin(9600);
pinMode(A3, OUTPUT);
analogWrite(A3, 255);
pinMode(A2, OUTPUT);
analogWrite(A2, 0);
Wire.begin();
RTC.begin();
if (RTC.isrunning()) {
RTC.adjust(DateTime(__DATE__, __TIME__));
delay(1000);
Serial.println("Data e hora ajustada com sucesso!");
if (RTC.isrunning()) {
Serial.println("e a correr!!");
} else }
Serial.println("e nao esta a correr!");
}
}
else{
Serial.println("RTC is NOT running!");
}
}
void loop () {
DateTime now = RTC.now();
Serial.print("Data e hora atual: ");
Serial.print(now.day(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.year(), 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);
}
Já agora quando te aparece que o relógio não está a correr, que é que aparece impresso no ecrã?
E quando diz que está a correr, o que é que aparece? Vês as horas a mexer?
Tens o relógio a funcionar com uma bateria para manter as horas a correr?
no manual diz isto:
"When cleared to 0, the oscillator is enabled. On first application of power to the device the time and date registers are typically reset to 01/01/00 01 00:00:00 (MM/DD/YY DOW HH:MM:SS). The CH bit in the seconds register will be set to a 1."
O que será o que acontece quando desligas o RTC. Se tiveres a usar uma pilha para manter a contagem do tempo, então não será isso. Mas o que eu acho estranho nesta "biblioteca" é a falta duma instrucão para iniciar e parar o RTC. Apenas ter uma a dizer que o RTC está a andar ou não é um pouco ridículo... mas adiante...
boa tarde bubulindo, fiz alguns teste com o seu codigo, veja o resultado
RTC is NOT running!
Data e hora atual: 1/1/2000 0:0:0
Data e hora atual: 1/1/2000 0:0:0
Data e hora atual: 1/1/2000 0:0:0
Data e hora atual: 1/1/2000 0:0:0
Data e hora atual: 1/1/2000 0:0:0
Data e hora atual: 1/1/2000 0:0:0
Bom, é uma placa pronta, então difícil ser problema de montagem/conexões erradas.
Mas eu tive esse problema quando estava montando o DS1307 na breadboard, devido a:
Conexões erradas;
Bateria não conectada ao ground do chip;
Inicialmente também utilizei uma biblioteca que não me trazia dados condizentes. A cada 5 leituras, uma era correta, as outras eram datas iniciais. Ao trocar a biblioteca, passou a funcionar corretamente.
Você diz que na primeira vez que conecta ao Arduino ele funciona e depois não funciona mais, é isso?
A placa já veio montado com a bateria encaixada?
Posso estar sendo muito simplista, mas como disse, eu tive problemas assim. Você poderia fazer um teste bobo:
Retirar a bateria e recolocá-la (isso desconectado do Arduino).
Boa noite, demorei um pouco para responder poque não estava conseguindo logar-me.
Acho que descobri o problema, mudei a condição para executar a rotina RTC.isrunning() e voltou a funcionar.
Como esta na rotina que voce me enviou:
if (RTC.isrunning()) {
RTC.adjust(DateTime(__DATE__, __TIME__));
Ficou assim:
if (!RTC.isrunning()) {
RTC.adjust(DateTime(__DATE__, __TIME__));
Desculpa não termos visto... mas olhando agora parece bastante óbvio qual era o problema. Um autêntico momento Homer Simpson. LOL
Se o relógio está a correr, fazer o adjust apenas muda a hora.
Se o relógio não está a correr, além de ajustar a hora a funcão inicia o contador de tempo. :\
O que é estranho é isto estar assim em todos os exemplos que vi :S