Relógio com o módulo RTC DS1307

Relógio com o módulo RTC DS1307

Com o módulo RTC DS1307 você tem um componente muito útil para montar algum tipo de relógio com o Arduino, setar alarmes e assim executar ações em horários predeterminados. Neste post vamos apresentar um tutorial de como conectar este módulo RTC DS1307 com um Arduino Uno, mostrando as informações de data e hora no Serial Monitor da IDE Arduino.

Relógio Módulo RTC DS1307

A sigla RTC significa Real Time Clock, ou seja, um Relógio de Tempo Real (RTC). Esse módulo tem 56 bytes de memória não-volátil disponível para uso, é capaz de armazenar e fornecer informações completas de data como dia da semana, dia do mês, mês, ano e além é claro, das funções de horas, minutos e segundos, nos formatos de 12 ou 24 horas. Meses com menos de 31 dias e anos bissextos são ajustados automaticamente.

Uma bateria de lítio garante que os dados sejam preservados mesmo sem alimentação externa, e é acionada automaticamente em caso de falta de energia no módulo.

Uma outra característica desse módulo é que você pode utilizar um sensor de temperatura DS18B20 (não incluso), e ler as informações do sensor à partir do pino DS do módulo, o que faz com que seja possível montar um relógio completo com data, hora, dia da semana e temperatura, sem a necessidade de outros componentes.

CONECTANDO RTC DS1307 AO ARDUINO:

Neste post vamos mostrar um breve tutorial de como ligar esse módulo RTC DS1307 ao Arduino e exibir todas essas informações no serial monitor.

Olhando o módulo pela parte inferior, podemos ver na parte esquerda os pinos GND, Vcc, SDA e SCL, utilizados para cascatear dispositivos I2C, e também o pino DS, que fornece os dados do sensor de temperatura, se o mesmo estiver instalado. No lado direito, vamos utilizar apenas os pinos SCL, SDA, Vcc e GND para ligação ao Arduino.

Conecte o módulo RTC DS1307 ao Arduino, tomando cuidado para não inverter as ligações, pois como vimos acima existem pinos com o mesmo nome dos dois lados do módulo :

 

Montagem DS1307 Arduino

Antes de carregar o programa, baixe a biblioteca RTC DS1307 nesse link, descompacte o arquivo e copie o conteúdo para a pasta LIBRARIES da IDE do seu Arduino.

No programa, a parte do código que contém os comandos

rtc.setDOW(MONDAY);
rtc.setTime(16, 30, 47); 
rtc.setDate(5, 6, 2014);

só deve ser utilizada para setar a hora e data do RTC DS1307. Depois disso, essas linhas podem ser comentadas ou excluídas e o programa deve ser novamente carregado no Arduino.

//Programa : Relogio com modulo RTC DS1307
//Autor : FILIPEFLOP

//Carrega a biblioteca do RTC DS1307
#include <DS1307.h>

//Modulo RTC DS1307 ligado as portas A4 e A5 do Arduino 
DS1307 rtc(A4, A5);

void setup()
{
  //Aciona o relogio
  rtc.halt(false);
  
  //As linhas abaixo setam a data e hora do modulo
  //e podem ser comentada apos a primeira utilizacao
  rtc.setDOW(FRIDAY);      //Define o dia da semana
  rtc.setTime(20, 37, 0);     //Define o horario
  rtc.setDate(6, 6, 2014);   //Define o dia, mes e ano
  
  //Definicoes do pino SQW/Out
  rtc.setSQWRate(SQW_RATE_1);
  rtc.enableSQW(true);
  
  Serial.begin(9600);
}

void loop()
{
  //Mostra as informações no Serial Monitor
  Serial.print("Hora : ");
  Serial.print(rtc.getTimeStr());
  Serial.print(" ");
  Serial.print("Data : ");
  Serial.print(rtc.getDateStr(FORMAT_SHORT));
  Serial.print(" ");
  Serial.println(rtc.getDOWStr(FORMAT_SHORT));
  
  //Aguarda 1 segundo e repete o processo
  delay (1000);
}

Execute o programa, abra o Serial Monitor e você terá as informações do RTC DS1307 dessa maneira :

Serial Monitor DS1307 Arduino

Essa biblioteca pode mostrar as informações da data em formato completo bastando retirar as informações de FORMAT_SHORT (formato reduzido) do programa.

Gostou ? Ajude-nos a melhorar o blog atribuindo uma nota aos posts (estrelas no início ou no final do artigo) e visite nossa loja FILIPEFLOP !

14
Relógio com o módulo RTC DS1307
161 votos, 4.81 classificação média (96% pontuação)

Formado em Ciência da Computação pela Universidade de Mogi das Cruzes, atualmente responsável pelo departamento técnico da FILIPEFLOP.

Compartilhe este Post

249 Comentários

  1. ANDRÉ - 29 de março de 2017

    Filipe, estou tendo problema na biblioteca que você carregou. O soft não reconheceu na hora de carregar.

  2. Tayane - 10 de janeiro de 2017

    òtimo site.
    Gostaria de saber se é possível fazer um registrador (de tempo e data) sem a necessidade de um módulo, visto que,o Arduino ira ficar conectado(pelo USB) direto no PC ?
    E tenho uma chave analógica que varia de 0 a 1023 bytes, e preciso registrar o tempo e a data quando ela atingir 700 bytes. Seria possível?

  3. felipe moreira - 2 de janeiro de 2017

    Olá meu nome é Felipe, eu sou cliente da FILIPEFLOP e gostaria de saber se alguem pode me ajudar. Eu já tinha utilizado o DS1307 e percebi que ele atrasa cerca de 2 segundos por dia ( o que é muito para o que eu quero fazer ) então comprei o DS3231 com a esperança de que ele fosse mais preciso, no entanto , ele teve o mesmo comportamento, gostaria de saber se vocês podem me dar alguma ajuda com relação a esse problema de atraso.

    Desde já obrigado pela atenção.

  4. Rodrigo - 20 de dezembro de 2016

    Pessoal, realizei um datalogger com ethernet shiled + rtc ds1307 e esse site me ajudou muito na parte de configurar o rtc. Tive alguns problemas que já foram citados por outros: Atraso no horário depois de alguns dias e algumas vezes registrava uma data e hora louca que não correspondia a realidade. Com relação ao atraso, acredito que é limitação do RTC mesmo, pois teve pessoas aqui que tentaram de diversas formas e não conseguiram solucionar de forma simples. Agora com relação a ele registrar data e horários sem sentido, eu conseguir resolver simplesmente trocando a bateria. Estava usando uma de marca sem procedência (PKCELL), e depois que troquei por uma Maxell, meu projeto parou de dar esse problema. Fica a dica, abraços!

  5. Claudio Camara - 30 de outubro de 2016

    Saudações!

    Estou usando o módulo RTS1307 sem a bateria (em teste) num modulo Ethernet Shield W5100 acoplado no Arduino Uno, e quando uso o exemplo, o tempo fica assim:

    Hora : 20:37:00 Data : 06.06.14 Friday
    Hora : 00:00:00 Data : 01.01.00 Monday
    Hora : 00:00:00 Data : 01.01.00 Monday
    Hora : 00:00:00 Data : 01.01.00 Monday
    Hora : 00:00:00 Data : 01.01.00 Monday
    Hora : 00:00:00 Data : 01.01.00 Monday
    Hora : 00:00:00 Data : 01.01.00 Monday
    Hora : 00:00:00 Data : 01.01.00 Monday

    Estou utilizando 5 Volts como mostrado no esquema!

    O que será que está errado?

    Será que é porque estou usando o modulo Ethernet W5100?

    Me socorra por favor !!! rs

    Abs,
    Claudio Camara

  6. Uigor - 26 de outubro de 2016

    Gostaria de controlar uma gpio por exemplo:
    se a hora >= 6:00;
    ligar gipio 7;

    como posso fazer isso ?

  7. Carlos - 24 de outubro de 2016

    Olá!
    Notei que para printar o horário (hora, minutos e segundos) basta o “Serial.print(rtc.getTimeStr());”. Estou trabalhando em um projeto e preciso posicionar um servo em função da hora. Minutos e segundos não seriam interessantes para mim. Tem como eu ler e printar apenas a hora? Ou pelo menos ignorar essas informações?
    Obrigado!

  8. Lindomar Schulze - 13 de setembro de 2016

    como faço para usar o rtc q é 5v e o bmp 180 q é 3,3v juntos?

  9. ALAN LIMA DA SILVA - 13 de agosto de 2016

    Boa tarde,
    Consegui fazer o RTC funcionar perfeitamente, a única questão é que depois do dia da semana está exibindo uma sugeira, dois caracteres do LCD ficam com pontos indefinidos, alguém teve esse problema?

    • DEIVISON RODRIGUES - 23 de novembro de 2016

      Bom dia!

      Estou com uma dúvida amigo.
      Além do módulo eu tenho que utilizar um resistor?vi que você já conseguiu e gostaria que me ajudasse nessa questão.
      Vou deixar meu zap ok?

      Grato!

    • Henrique Morais - 7 de fevereiro de 2017

      Faz o seguinte em coloca um temporizador usando a função millis().

      Esse temporizador executa uma unica vez a função lcd.clear();

      Mas se preferir vc tambem pode fazer assim:

      Antes de escrever no lcd limpe a linha usando espaço em branco assim.

      lcd.setCursor(0,0);
      lcd.print(” “); // 16 espaços em branco
      lcd.setCursor(0,0);
      lcd.print(” Seu texto “);

  10. Cristiano - 9 de agosto de 2016

    Na descrição desse módulo, diz que a bateria de lítio garante que os dados sejam preservados mesmo sem alimentação externa. Queria saber se ele continua contando o tempo, mesmo sem alimentação ou se apenas grava a última informação.
    Tenho ele no meu programa, mas quando eu tiro a alimentação ele não conta o tempo em que ficou desligado, voltando para o mesmo horário do último processamento (não o horário ajustado). Queria saber se é um problema de configuração, problema no meu módulo, ou se é uma característica mesmo.

    • Adilson Thomsen - 17 de agosto de 2016

      Boa tarde Cristiano,

      Pode ser apenas um problema de bateria. Verifique a carga, por favor.

      Abraço!

      Adilson – Equipe FILIPEFLOP

    • Ivens Meyer - 15 de outubro de 2016

      Olá Cristiano. Estava com um problema semelhante, bastava desligar e religar a placa, que retornava o último horário do setup feito, ou então, bastava que eu aplicasse o reset do Arduíno que retornava o horário anterior.
      O que acontecia, no meu caso :
      A linha que fazia o setup da hora, depois de utilizada, eu a comentei com duas barras no scketch, entretanto ela ainda estava na memória não volátil do Arduíno, desta forma percebi que era necessário fazer o upload para o Arduino, do scketch com a linha comentada, e assim ele não mais a realizaria.
      Desta forma, no meu caso. o que acontecia era simples: Toda vez que eu desligava e religava o Arduino, ele corretamente realizava a rotina de inicialização do bootloader, e lá ainda estava a linha de set-up do relógio.
      Feito isto o relógio ficou funcionando normalmente, sem atrasos, ou qualquer outro contratempo.
      Estou muito satisfeito com o produto.
      Espero que esta mensagem possa ajudar alguns, que sem querer fizeram o mesmo procedimento.

      Abraço a todos.

  11. Robson - 30 de julho de 2016

    Olá! Alguém sabe dizer como solucionar o problema do DS1307 adiantando, o meu ta cerca de 20 segundos por dia

  12. Everton Pek - 19 de julho de 2016

    Olá, tenho um arduino ligado a um RTC e ao um relé, gostaria de fazer que uma lampada fica-se ligada das 06:0 as 18:00, e desligada das 18:01 as 05:59 como faria isso ?

  13. Cristiano - 30 de junho de 2016

    Bom dia, estou com problemas na hora de compilar o módulo, da a seguinte mensagem de erro

    Arduino: 1.6.9 (Windows 7), Placa:”Arduino/Genuino Uno”

    In file included from C:\Users\user\Documents\Mestrado\Projeto\Arduino\Sketchbook\Principal_Abas3\Principal_Abas3.ino:53:0:

    C:\Program Files (x86)\Arduino\libraries\DS1307-master/DS1307.h:54:1: error: expected initializer before ‘class’

    class Time

    ^

    C:\Program Files (x86)\Arduino\libraries\DS1307-master/DS1307.h:80:2: error: ‘Time’ does not name a type

    Time getTime();

    ^

    exit status 1
    Erro compilando para a placa Arduino/Genuino Uno

    Pelo que olhei no código dessa biblioteca, isso tudo é dentro dela e não sei o que fazer.
    Alguem pode me ajudar.

  14. Julio - 21 de junho de 2016

    Para hora eu utilizo os comandos abaixo:
    #include DS3231.h
    #include Wire.h
    DS3231 Clock;

    Porém eu sou obrigado a utilizar as portas A4 e A5 conectadas no SDA e SCL.
    Como faço para mudar isso e utilizar as portas A1 e A2 para conectar no SDA e SCL?

    • Henrique Morais - 7 de fevereiro de 2017

      Não fiz nenhum teste ainda a esse respeito.

      Uma das coisas que andei lendo sobre i2c é que ele chama um endereço e somente o componente com aquele endereço que responde. Assim vc pode colocar componentes i2c na mesma porta que a comunicação nao vai ser afetada ( a menos que eles tenham o mesmo endereço ).

  15. Julio - 21 de junho de 2016

    Para hora eu utilizo os comandos abaixo:
    #include
    #include
    DS3231 Clock;

    Porém eu sou obrigado a utilizar as portas A4 e A5 conectadas no SDA e SCL.
    Como faço para mudar isso e utilizar as portas A1 e A2 para conectar no SDA e SCL?

    • Gabrielle - 21 de junho de 2016

      Bom, acredito que vai depender da biblioteca que você está utilizando. Se você utilizar a mesma biblioteca deste tutorial, você poderá escolher as portas no comando abaixo:

      //Carrega a biblioteca do RTC DS1307
      #include

      //Modulo RTC DS1307 ligado as portas A4 e A5 do Arduino
      DS1307 rtc(A4, A5); //aqui você colocaria A1,A2

      • Julio - 21 de junho de 2016

        Gabrielle, em primeiro lugar obrigado pela resposta.
        Acontece que eu já utilizo outra rotina e ficaria difícil para eu mudar tudo.
        Eu utilizo os comandos abaixo e não vi nenhum lugar onde eu possa mudar de A4 e A5 para A2 e A3
        #include DS3231.h
        #include Wire.h
        DS3231 Clock;

      • Gabrielle - 21 de junho de 2016

        Neste caso, se você está utilizando o Arduino Uno seriam estas portas mesmo então, A4 e A5. No Arduino Mega seriam as portas 20 e 21, pois isso se baseia no protocolo 12C que é implementado pela biblioteca Wire.h.
        Estou desenvolvendo um projeto que utiliza o módulo RTC e uma bússola magnética que também utiliza as portas SDA e SCL. Estou utilizando o Arduino Mega e os pinos 20 e 21 para o RTC e os dois pinos acima do 13, GND, AREF – que são dois pinos que não tem nada escrito – para a bússola.

  16. Luiz Henrique - 16 de junho de 2016

    Boa tarde, por muita gentileza como eu faço pra conseguir a temperatura utilizando o mesmo módulo relógio com o DS18B20 acoplado ao mesmo, alguém poderia me ajudar, desde já agradeço.

  17. wanderson fasolo - 15 de junho de 2016

    na verdade a biblioteca está dando erro até no arduino na hora de compilar.

  18. Wanderson Fasolo - 15 de junho de 2016

    estou com dificuldades em compilar a biblioteca DS1307.h no ATTINY13A. ALGUEM PODE ME AJUDAR?

  19. Matheus gomes - 6 de junho de 2016

    Olá, eu consigo usar esse módulo rtc e o módulo i2c no mesmo projeto alterando as bibliotecas?
    Obrigado

  20. Rafael - 1 de junho de 2016

    Como eu faço para ajustar a data e hora atraves de botoes?

  21. Álvaro Henrique - 24 de maio de 2016

    Olá,

    Em vez de usar o sensor de temperatura DS18B20 eu posso usar o lm35?
    E como é código para obter a data, hora e temperatura juntas?

    Obrigado por mais esse tutorial!
    Seus tutoriais têm me ajudado muito no meu projeto!

  22. Gabrielle - 19 de maio de 2016

    Mesmo após inverter o SCL e o SDA o meu resultado continua como abaixo. Os minutos que são crescentes e os segundos estão doidos. a data não sai de 19/01. O código está igual ao do tutorial, eu mudei apenas a pinagem para A2 e A3, mas mesmo na pinagem A4 e A5 não resolve o problema.

    Hora : 24:14:51 Data : 01.19.01 1.19.01
    Hora : 24:15:85 Data : 01.19.01 1.19.01
    Hora : 24:16:59 Data : 01.19.01 1.19.01
    Hora : 24:17:51 Data : 01.19.01 1.19.01
    Hora : 24:18:51 Data : 01.19.01 1.19.01
    Hora : 24:19:51 Data : 01.19.01 1.19.01
    Hora : 24:20:51 Data : 01.19.01 1.19.01
    Hora : 24:21:51 Data : 01.19.01 1.19.01
    Hora : 24:22:85 Data : 01.19.01 1.19.01
    Hora : 24:23:83 Data : 01.19.01 1.19.01
    Hora : 24:24:51 Data : 01.19.01 1.19.01
    Hora : 24:25:51 Data : 01.19.01 1.19.01
    Hora : 24:26:85 Data : 01.19.01 1.19.01
    Hora : 24:27:51 Data : 01.19.01 1.19.01
    Hora : 24:28:59 Data : 01.19.01 1.19.01
    Hora : 24:29:83 Data : 01.19.01 1.19.01
    Hora : 24:30:51 Data : 01.19.01 1.19.01
    Hora : 24:31:51 Data : 01.19.01 1.19.01
    Hora : 24:32:83 Data : 01.19.01 1.19.01
    Hora : 24:33:59 Data : 01.19.01 1.19.01

    • Adilson Thomsen - 20 de maio de 2016

      Bom dia Gabrielle,

      Tentou colocar um resistor de 200 ohms, como o outro usuário postou aqui na área de comentários ?

      Abraço.

      Adilson – Equipe FILIPEFLOP

      • Gabrielle - 20 de maio de 2016

        Oi Adilson,
        Eu não tinha testado com o resistor não, mas mesmo com ele o resultado não está vindo com o horário certo. Agora está assim:

        Hora : 00:00:85 Data : 00.00.00 0.00.00
        Hora : 00:00:85 Data : 00.00.00 0.00.00
        Hora : 00:00:85 Data : 00.00.00 0.00.00
        Hora : 00:00:85 Data : 00.00.00 0.00.00
        Hora : 00:00:85 Data : 00.00.00 0.00.00
        Hora : 00:00:85 Data : 00.00.00 0.00.00
        Hora : 00:00:85 Data : 00.00.00 0.00.00

        Obrigada pela resposta.

        • Adilson Thomsen - 20 de maio de 2016

          Boa tarde Gabrielle,

          Entendi. Bom, peço que você reveja o circuito e se necessário refaça a solda dos conectores, para ter certeza que não é nenhum problema de conexão. Caso o problema persista, peço que entre em contato pelo email vendas@filipeflop.com para orientação sobre o procedimento de troca.

          Abraço!

          Adilson – Equipe FILIPEFLOP

        • Guilherme - 3 de novembro de 2016

          Olá Gabriella,

          Estou com o mesmo problema que você, já verifiquei meu circuito e está exatamente igual ao exemplo. Você conseguiu resolver esse problema?

      • Roberto Kasten - 14 de novembro de 2016

        Ola, eu gostaria de mais detalhes sobre o resistor de 200 Ohms , em qual posição/ pinos ele deve ser conectado exatamente ?

    • lucas - 5 de junho de 2016

      Boa, pode ser os jumpers, troque os cabos e tente novamente.

  23. Werleson N. - 5 de maio de 2016

    Consegui utilizar tranquilo com a serial, mas não sai quando tento printa-lo para lcd. Alguém já fez isso ?

    • henrique morais - 7 de maio de 2016

      Coloca no lcd é bem tranquilo.

      vc faz assim para printar na serial:

      Serial.print(“Hora : “);
      Serial.print(rtc.getTimeStr());

      no lcd depois de configurar ele como já é de costume vc faz assim.
      lcd.setCursor(0,0);
      lcd.print(“hora:”);
      lcd.setCursor(0,1);
      lcd.print(rtc.getTimeStr());

      antes é bom testar com o seu lcd com o exemplo que do arduino. Hello Word.

    • henrique morais - 7 de maio de 2016

      Opa lembrei de bug que foi muito chato de descobrir.

      acredite quem quiser, primeiro deixo claro que fiz o teste umas 5 vezes para acreditar tambem .

      de uma hora para outra meu lcd deu ruim. mexi em tudo e num teste eu comentei a linha do : Serial.begin(9600); ai ele funcionou . eu retirei o comentario e bug voltou.

      coloquei a declaração do lcd antes do Serial e ai deu tudo certo.

      lcd.begin(16,2);
      Serial.begin(9600);

      eu consegui atualizar o RTC pela serial e quero mostrar depois como fiz isso. Mas tenho que bolar um exemplo pois não posso mostrar a programação original por etica .

      Estou fazendo alguns projetinho muito legais para onde eu trabalho. Essa semana comprei mais 12 arduino mega aqui no filipeflop.

  24. Ricardo - 17 de abril de 2016

    Deveria ser disponibilizada uma biblioteca para uso da EEProm da plaquinha, tive que peregrinar um pouco até encontrar uma simples de usar.

  25. LEONARDO DE FREITAS GABARDON - 27 de março de 2016

    Tem como eu utilizar o Arduíno uno com RTC e o mega para executar esse sketch?

  26. Allan - 11 de março de 2016

    Como eu declaro o pino no Mega?

  27. Lucas - 4 de março de 2016

    Usei o código fornecido aqui na página e não importa que data ou horário eu setar ele sempre me escreve:

    Hora : 27:85:85 Data : 85.85.2165 5.85.2165
    Hora : 27:85:85 Data : 85.85.2165 5.85.2165
    Hora : 27:85:85 Data : 85.85.2165 5.85.2165

    Onde o “5.85.2165” estranhamente é o que a função “rtc.getDOWStr()” retorna.
    Também não há evolução no tempo, ele fica parado nessa dara maluca do futuro para sempre.
    O que pode estar acontecendo?

  28. jose henrique - 26 de fevereiro de 2016

    Uma forma legal de acertar o relógio é usando a Serial.

    Na aplicação que eu uso o RTC eu criei um programa que que puxa os dados do arduino pela serial e grava em Excel. Nesse programa eu mandei uma String para o arduino com a hora atual do sistema, depois tratei a informação preenchendo os campos de arrumar data hora , minuto , segundo , dia , mes , ano e dia da semana.

    Resumindo agora quando acontece algum problema e tenho que atualizar a hora, tipo agora a pouco na virada do horario de verão, tudo que tive que fazer foi conectar na serial e apertar um botão para atualizar.

  29. Leandro Sá - 3 de fevereiro de 2016

    Olá. Estou com uma dúvida em relação à bateria do ds1307. Ela serve APENAS para manter os dados caso o arduino ao qual o RTC está conectado seja desligado? Ou o RTC não deveria continuar contando o tempo mesmo com o arduino desligado? O que eu percebi foi que ao desligar o arduino, a contagem do tempo pára, continuando no mesmo horário (e não na hora atual) ao realimentar o arduino. Está certo isso? Ou é defeito do RTC?
    Obrigado

    • FILIPEFLOP - 11 de fevereiro de 2016

      Bom dia Leandro,

      A bateria serve para manter a contagem do tempo mesmo sem alimentação do módulo. Pelo que você descreve, pode ser algum defeito no RTC, mas verifique também o programa, talvez ele esteja redefinindo a hora à cada inicialização do Arduino.

      Abraço.

      Adilson – Equipe FILIPEFLOP

      • Leandro Sá - 25 de fevereiro de 2016

        Olá. Não é problema no código. E eu me expressei mal na mensagem anterior. Ao realimentar o circuito, o RTC não continua a contagem do tempo em um valor fixo. Ele continua a partir da hora em que o circuito foi desligado. Por exemplo: se eu desligar o circuito às 9h17 e religar 23 minutos depois, ele continua a contagem do tempo em 9h17 (e não 9h40).

  30. Jose - 22 de janeiro de 2016

    Tenho me deparado com um erro. O rtc volta sozinho para a 12:35.

    Alguem ja passou por isso?

    • Marcel - 22 de janeiro de 2016

      Você tem que upar o código uma vez com as linhas de código que setam a hora do rtc, depois upar de novo o código sem essas linhas. Se não upar a segunda vez, sem essas linhas, toda vez que o arduino reiniciar ele vai rodas essas linhas (e não vai ter IDE para passar a hora correta).

      • jose - 26 de janeiro de 2016

        Isso eu ja faço. E por esse motivo que eu consigo sincronizar bem o rtc com o relogio, eu mando a programação com 1 minuto adiantado e quando o tempo sincronizar com o meu relogio ai eu reseto a placa do arduino e jogo a programação com as linhas comentadas. Fiz isso em 14 projetos sem problemas e em dois projetos depois de uns 2 minutos a hora volta pra 12:35. Vale lembrar que a hora colocada na programação é quase sempre depois das 15 horas.

  31. Anderson - 9 de janeiro de 2016

    Porque na hora de copilar dá esse erro?

    Modulo_RTC_e_LCD.ino: In function ‘void SelecionaDataeHora()':
    Modulo_RTC_e_LCD.ino:38:8: error: ‘class TwoWire’ has no member named ‘write’
    Modulo_RTC_e_LCD.ino:42:8: error: ‘class TwoWire’ has no member named ‘write’
    Modulo_RTC_e_LCD.ino:43:8: error: ‘class TwoWire’ has no member named ‘write’
    Modulo_RTC_e_LCD.ino:44:8: error: ‘class TwoWire’ has no member named ‘write’
    Modulo_RTC_e_LCD.ino:45:8: error: ‘class TwoWire’ has no member named ‘write’
    Modulo_RTC_e_LCD.ino:46:8: error: ‘class TwoWire’ has no member named ‘write’
    Modulo_RTC_e_LCD.ino:47:8: error: ‘class TwoWire’ has no member named ‘write’
    Modulo_RTC_e_LCD.ino:48:8: error: ‘class TwoWire’ has no member named ‘write’
    Modulo_RTC_e_LCD.ino:49:8: error: ‘class TwoWire’ has no member named ‘write’
    Modulo_RTC_e_LCD.ino: In function ‘void Mostrarelogio()':
    Modulo_RTC_e_LCD.ino:64:8: error: ‘class TwoWire’ has no member named ‘write’
    Modulo_RTC_e_LCD.ino:67:43: error: ‘class TwoWire’ has no member named ‘read’
    Modulo_RTC_e_LCD.ino:68:42: error: ‘class TwoWire’ has no member named ‘read’
    Modulo_RTC_e_LCD.ino:69:40: error: ‘class TwoWire’ has no member named ‘read’
    Modulo_RTC_e_LCD.ino:70:46: error: ‘class TwoWire’ has no member named ‘read’
    Modulo_RTC_e_LCD.ino:71:43: error: ‘class TwoWire’ has no member named ‘read’
    Modulo_RTC_e_LCD.ino:72:38: error: ‘class TwoWire’ has no member named ‘read’
    Modulo_RTC_e_LCD.ino:73:38: error: ‘class TwoWire’ has no member named ‘read’

    • jose henrique - 13 de janeiro de 2016

      Confira se sua biblioteca está no lugar certo.
      Confira a declaração da biblioteca
      Confira todas aberturas e fechamentos de ” { ” .
      Confira se não esqueceu de nenhum ” ; ” ou de abertura ou fechamento de “(” .

      Se tudo isso estiver feito certo então é conflito na sua lógica.

  32. Vitor Prado - 8 de janeiro de 2016

    Boa tarde! Estou iniciando no Arduino… Alguém pode me ajudar com uma dúvida? Consigo criar a lógica dividida em camadas? Para usar um interlock por exemplo, o Void Loop só executa enquanto as condições forem respeitadas e se as mesmas forem desrespeitadas o loop para.

    • jose henrique - 13 de janeiro de 2016

      O loop não para. Vc pode é colocar o seu código uma condição , se respeitada a condição entra no If e se não respeitada nada vai acontecer.

      tipo:

      void loop(){
      if(condição){

      }

      }

    • Marcel - 14 de janeiro de 2016

      O Void Loop nunca pára, cara. No máximo, o que pode acontecer é ele entrar num loop infinito, dentro de uma função, e não sair mais dali de dentro. O Arduino sempre vai rodar o Void Loop do início ao fim, repetida e infinitamente. Apenas o Void Setup que é rodado apenas 1 única vez, ao ligar o Arduino. Quanto às camadas, você pode fazer, sim, através de If’s, por exemplo.

  33. Rodrigo sousa - 6 de janeiro de 2016

    Ola pessoal!
    alguém poderia me ajudar?
    preciso de um programa para acionar um rele com hora programada utilizando o RTC DS1307.
    se alguém puder me ajudar ficarei muito agradecido.
    Boa noite!

    • carlos pina - 20 de janeiro de 2016

      Considerando que o DS1307 não possui a função alarme, você poderá resolver de uma das tres formas:
      1- armazenar o horário inicio e horário fim na EEPROM do atmega328
      2- idem mas na memória do próprio DS1307 que embora volátil não se perderá enquanto a bateria estivel operacional obs: o rtc tem 58 bytes RAM
      3- idem mas armazenado na memória serial ao lado do rtc on board no modulo.

    • Marcel - 22 de janeiro de 2016

      Bom… provavelmente vc vai usar Arduino + RTC + módulo de relê.
      Não precisa usar EEPROM. É só colocar uma condição que, quando o Arduino ler aquela hora e minuto do RTC, ele vai acionar uma porta digital (que controla o relê). Por ex.:

      void loop() {
      If ((now.hour() == 13) && (now.minute() == 30))
      {
      digitalWrite(11, LOW);
      }
      } // Se agora for 13h30min a porta 11 (conectada ao controlador do relê) irá ficar como LOW.

      No caso de um código meu, eu uso “agora” no lugar desse “now” aí, mas não faz diferença.

      Dá uma pesquisada no Google que tem mta coisa na net.

  34. josé henrique - 14 de dezembro de 2015

    Primeiro estou muito satisfeito com o Site.

    Comprei para a empresa em que trabalho uns 30 rtc com vcs. Estou começando os testes agora, ja tive alguns erros citados anteriormente nesse poste, tipo Hora : 00:00:85 Data : 00.00.00 0.00.00 , tudo zerado e tudo desconfigurado.

    Amanha vou fazer o teste do resistor de 200 e verificar todas as baterias, uma outra coisa que fiquei atento é que vc usou a versão 1.0.5 do arduino e estou usando a versão 1.6.6 ( que é otima ) , porem os exemplos do biblioteca do rtc dão erro, ele acusa erro na :

    rtc.begin();

    Queria saber se tem alguma atualização que vc conhece da biblioteca ou se esses erros dos exemplos tambem acontecem na sua versão.

    Obrigado.

  35. sidnei - 8 de dezembro de 2015

    acertei o relogio com outro relogio mas com o tempo o modulo atrasa com o decorrer do tempo, o que seria, o modulo ou a programação, já peguei varios codigos diferentes todos tem o mesmo atraso, alguem tem alguma sugestão.

    • jose henrique - 9 de dezembro de 2015

      Eu comprei mas ainda não chegou para ter uma ideia completa.

      Da uma olhada no seu codigo e tenta diminuir o tempo do delay. Pode ser que simplesmente seu codigo está parado contando o delay enquanto a informação do RTC já não foi lida.

    • fabio - 17 de dezembro de 2015

      sidnei o resistor é colocado no pino vcc/5volts?

    • carlos pina - 20 de janeiro de 2016

      Este CI DS1307 é muito vulnerável e critico quanto ao plano de terra, principalmente na região do cristal 23.768Khz, Vide datasheet, portanto como poderá ver debaixo do cristal há um pad para solda deste, acredito que se o aterrar (soldar o cristal neste pad melhorará a base de tempo.

    • Marcel - 22 de janeiro de 2016

      Não tem solução existente na face dessa terra que resolva isso. Todo santo dia o DS1307 perde alguns segundos, o que vai, logicamente, se acumulando com o decorrer do tempo. Depois de 1 mês vc vai ter alguns minutos de atraso. Só que se esse fosse o único problema desse RTC, tava perfeito. Se você procurar outros comentários meus anteriores aqui na página, vai saber do que tou falando. Abs.

  36. Diorgio - 6 de dezembro de 2015

    porque quando eu copio e colo a programação na IDE do meu arduino da sempre erro de compilação?

    • jose henrique - 9 de dezembro de 2015

      Quase sempre é alguma informação que ficou sem vir junto do lugar que vc fez a copia.

      Tipo uma } ou um ;.

      Mas sempre confira se a placa do arduino que vc esta usando é a mesma que esta marcada na IDE.

  37. Thiago - 28 de novembro de 2015

    Olá, meu módulo está com defeito

    verifiquei o código, as ligações e com esse código ele só retorna
    Hora : 00:00:85 Data : 00.00.00 0.00.00

    Está com defeito mesmo? FILIPEFLOP

  38. Edmilson - 24 de novembro de 2015

    É possível utilizar o RTC DS1307 + um display OLED nos mesmos pinos? fazendo cascateamento… Se for possível teria como montar um tutorial a respeito?

  39. fabio - 16 de novembro de 2015

    bom dia, eu posso controlar um led, módulo relé, lâmpada com ele? por exemplo: acender Led, das 18:00 até 06:00?

  40. LUIZ CYPRIANO - 10 de novembro de 2015

    NO FIO DO SINAL O MESMO QUE COLOCA O RESISTOR PEGA UM FERRITE EM FORMA DE SOLENOIDE E PASSA UMAS 03 VEZES É SÓ ISSO SE NÃO ENTER ME AVISA QUE EU MANDO UMA FOTO

  41. LUIZ CYPRIANO - 10 de novembro de 2015

    BOA NOITE A TODOS É SÓ COLOCAR UM NUCLEO DE FERRITE QUE SOME O PROBLEMA JÁ ESCREVI ISSO VARIAS VEZES

  42. Marcel - 10 de novembro de 2015

    ATUALIZAÇÃO sobre meu comentário anterior:

    Pessoal, já faz uns 2 meses que coloquei o resistor de 200R (entre o pino SLC do RTC e o SCL do Arduino) e, de lá pra cá, não tive mais problema. Ainda estou observando para ver quanto tempo o RTC fica sem falhar. Rezando a Deus pra esse upgrade ter sido uma solução definitiva, pra eu não precisar mais me preocupar com esse bendito… no dia que voltar a dar problema (espero que nunca) comento aqui de novo pra avisar quanto tempo durou… Obrigado pelo suporte, FelipeFlop e comunidade. Abraços.

    Tirando a dúvida de quem perguntou sobre qual solução eu tomava antes: eu sempre trocava a bateria (uma vez ou outra trocava o rtc inteiro), upava o código com a linha pra pegar a hora novamente e depois upava o código sem essa linha. Quando ele dava problema com a hora de novo, repetia o procedimento, sempre fazendo o teste primeiro só com a bateria nova. Se não desse certo, trocava o rtc.

  43. Rodrigo sousa - 10 de novembro de 2015

    Boa tarde!

    Não consigo ajustador a hora no monitor serial com o RTC alguém pode me ajudar por favor?
    Obrigado

  44. Dayene - 9 de novembro de 2015

    Olá!
    Esse tutorial pode ser usado para o timer 3231?

    Obrigada!

  45. LUIZ CYPRIANO - 18 de outubro de 2015

    COLOQUE UM FERRITE CIRCULAR NO FIO QUE RECEBE OS DADOS ISSO VAI MESMO É RUIDO

  46. Ian Petrus - 14 de outubro de 2015

    Boa noite.
    queria saber como eu faço para acender uma lampada as 8 da manha e apaga-la as 18 usando essa programação. pois não estou conseguindo identificar uma forma de definir a hr para que poça acontecer.

  47. Mauricio - 13 de outubro de 2015

    Fica-me sempre na sexta feira, como posso mudar isto?

    sendo que n codigo se mudar da erro

  48. Iohana - 6 de outubro de 2015

    Oi, tenho um projeto com RTC. Quando alimento o sistema com o notebook ele funciona perfeitamente, entretanto, ao ligar a uma bateria de 12 v que contém um divisor de tensão ele reinicia. Alguém já teve esse problema e sabe me dizer por que isso acontece?

  49. Thais Kamienski - 25 de setembro de 2015

    Boa Tarde!

    estou com uma duvida, o rtc tem um pino de bateria, e a bateria que vem com ele ( vendido por esse site) é a recarregável, tem alguma ligação que possa ser feita para recarregar ele?

    • Rafael Fernandes - 8 de dezembro de 2015

      Seguinte posso estar enganado mas, comprei quatro módulos desse do mesmo site chines, acho que via ebay, quando fui usa-las pela primeira vez, essa semana constatei que 3 baterias estavam zeradas < 0.2v, e uma estava a 3.32 que é considerada full para baterias de lítio (3v com carga), tive problemas com o modulo e endereço o que me obrigou a me aprofundar e descobri que as outras três baterias são de Íons de Litio (3,6V) sendo as mesmas de 35 mAh, e que são recarregadas por módulos como o Tiny so em estar alimentado o circuito principal, entretanto acredito que na falta de uma bateria LI(R)2032 (acredito ser LitIon Recarregável ) de Lion se preferirem, me mandaram uma CR2032 n recarregável, e que por sorte constatei tanto pelo nome como a tenção que eh de 3,0v, ou seja provavelmente alguém deva estar tendo problemas nesses módulos colocando baterias não recarregáveis, enquanto o modulo mesmo suportando 1 ano, sempre mantem elas carregadas, pois a tecnologia permite isso da química delas, carregar sem efeito memória, mas em resumo, posso estar enganado mas n usem baterias CR2032 nem similares sem ser de Íons de Lítio onde essas são carregadas pelos módulos sem problemas, o VBAT, serve para vc medir a tenção dessas baterias enquanto as usam, posso estar enganado mas acho que passa por um transistor ou diodo pois ela de 3.0v cai pra 2.33v (queda de tensão similar desses componentes ) na saída do pino, ou algum divisor de tensão a constatar, fato eh que , com a de lition sai os 3v necessários para um modulo GPS e seu relógio interno o que simplesmente ligo nele para obter recuperação do sinal de satélite mais rápida. Posso ter falado algo errado ou incompleto por gentileza alguém poderia me corrigir sendo o caso? Resumindo se n mudar o esquema de um Tiny RTC por exemplo o modulo vai tentar carregar a bateria seja ela CD ou LIR, no caso da CR ja sabemos onde isso vai dr ja que se trata de uma química não recarregável.

  50. Andre - 23 de setembro de 2015

    Estou com o mesmo problema do Gabriel, só fica no erro Hora : 27:01:51 Data : 85.85.xxx, ja fiz tudo que foi falado aqui e nao deu certo, o que pode ser?

  51. Rodrigo sousa - 16 de setembro de 2015

    Ola

    Estou com dificuldades para compilar o sketch do RTC DS1307
    esta apresentando o seguinte erro:

    RTC.ino:5:20: fatal error: DS1307.h: No such file or directory
    compilation terminated.
    Erro compilando.

    Gostaria de alguma ajuda se possível
    Obrigado!
    .

  52. Marcel - 9 de setembro de 2015

    Rapaz, mais de 9 meses com um projeto funcionando 24h no ar, 7 dias por semana, e não teve jeito, já troquei o RTC dele diversas vezes. Sem mal contato na caixa, sem soldas frias, upando a linha de código pra pegar a hora só 1 vez e depois upando sem a linha, tendo trocado o RTC por outros novos várias vezes, colocando baterias novas várias vezes… Depois de 1 ou 2 meses o RTC acaba perdendo a hora e começa a mostrar 00:00:00 00/00/000 ou então o famoso 85:28:85 etc (mas geralmente é com os valores zerados). Aí preciso ir até meu cliente, refazer tudo de novo e esperar bugar outra vez. E o circuito fica 24h sendo alimentado pela fonte de alimentação, exceto algumas poucas horas (ou minutos) quando falta energia, ou seja, é raro usar a bateria do RTC.

    E a única coisa que me aperreia é esse DANADO desse RTC. Nada mais me dá dor de cabeça no projeto, exceto isso. Já tou estressado! E isso pq eu nem me importo com a questão de que ele vai atrasando/adiantando alguns minutos com o tempo… kkkkkkk. E o pior de tudo é não encontrar um outro que seja melhor (ou menos ruim… kkkkkk).

    • FILIPEFLOP - 10 de setembro de 2015

      Bom dia,

      Você já tentou colocar um resistor de 200 ohms (creio que um valor próximo a esse também funcione) entre o RTC e o pino A5 ?

      Abraço

      Adilson – Equipe FILIPEFLOP

    • Iohana - 25 de setembro de 2015

      Marcel, eu também estou com o mesmo problema, você conseguiu resolver?

    • Marcel - 10 de novembro de 2015

      Pessoal, já faz uns 2 meses que coloquei o resistor de 200R e, de lá pra cá, não tive mais problema. Ainda estou observando para ver quanto tempo o RTC fica sem falhar. Rezando a Deus pra esse upgrade ter sido uma solução definitiva, pra eu não precisar mais me preocupar com esse bendito RTC… no dia que voltar a dar problema (espero que nunca) comento aqui de novo pra avisar quanto tempo durou… Obrigado pelo suporte, FelipeFlop e comunidade. Abraços.

      Tirando a dúvida de quem perguntou sobre qual solução eu tomava antes: eu sempre trocava a bateria (uma vez ou outra trocava o rtc inteiro), upava o código com a linha pra pegar a hora novamente e depois upava o código sem essa linha.

      • Rafael Fernandes - 8 de dezembro de 2015

        So n esquece de ver se estais usando baterias n recarregáveis como as de PC CR2032, no lugar da LIR2032 que o modulo tenta carregar as duas mas so a segunda é recarregável, o que pod ser motivo da falha de seus módulos… So uma sugestão… comprei 4 módulos 3 vieram com LIR e so uma com CR, pesquisando descobri algo do tipo que comentei …vlw.

  53. Jhonny - 1 de setembro de 2015

    Meu RTC não Aparece nada legível, no monitor serial aparece símbolos:

    QSþ©QSþ©QSþ©QRþ©QSþ©QSþ©QRþ©QSþ©QSþ©QSþ©QSþ©QSþ©A¦ü©QSþ©QSþ©QSþ©QRþ©QSþ©QSþ©QSþ©A¦ü«A¦ü©QSþ©A¦ü©QSþ

    já fiz uma vez e funcionou, mas agora ta assim..oque pode ter acontecido?

  54. gabriel - 28 de julho de 2015

    O meu relógio só mostra
    Hora : 27:85:85 Data : 85.85.@5 5.85.@5 e Hora : 00:00:00 Data : 00.00.00 0.00.00
    o que será que está acontecendo?

  55. Relógio com o módulo RTC DS1307 e LCD 20x4 | Blog FILIPEFLOP - 30 de junho de 2015

    […] de data e hora no serial monitor. Agora nesse post, vamos utilizar como base esse mesmo artigo (Relógio com o módulo RTC DS1307) e exibir essas informações em um Display LCD 20×4, deixando o nosso relógio muito mais […]

  56. Eduardo - 26 de maio de 2015

    Bom dia, estou em um projeto em que tenho que calcular a temperatura média do mês e enviar para um aplicativo via bluetooth, como posso fazer para contar 1 mês com o RTC, e no final enviar a media? Alguem pode me responder, pf.

  57. Leonardo Nascimento - 21 de maio de 2015

    Filipe como faço para ativar o sensor de temperatura desse modulo no código?

    • FILIPEFLOP - 22 de maio de 2015

      Boa noite Leonardo,

      Você precisa soldar um DS18B20 no conector da placa, e depois ler as informações de temperatura por meio do pino DS.

      Abraço.

      Adilson – Equipe FILIPEFLOP

    • Geraldo - 20 de junho de 2015

      Bom dia Eduardo!
      Eu adicionei as seguintes linhas ao programa:
      #include

      // On pin 13, a 4.7K resistor
      OneWire ds(13);

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

      }

      void loop(){
      //Variáveis da Temperatura
      byte i;
      byte present = 0;
      byte type_s;
      byte data[12];
      byte addr[8];
      float celsius, fahrenheit;

      if (OneWire::crc8(addr, 7) != addr[7]){
      Serial.println(“CRC is not valid!”);
      return;
      }

      Serial.println();
      // the first ROM byte indicates which chip
      switch (addr[0]){
      case 0x10:
      Serial.println(” Chip = DS18S20″); // or old DS1820
      type_s = 1;
      break;
      case 0x28:
      Serial.println(” Chip = DS18B20″);
      type_s = 0;
      break;
      case 0x22:
      Serial.println(” Chip = DS1822″);
      type_s = 0;
      break;
      default:
      Serial.println(“Device is not a DS18x20 family device.”);
      return;
      }

      ds.reset();
      ds.select(addr);
      ds.write(0x44); // start conversion, use ds.write(0x44,1) with parasite power on at the end

      delay(1000); // maybe 750ms is enough, maybe not

      // we might do a ds.depower() here, but the reset will take care of it.
      present = ds.reset();
      ds.select(addr);
      ds.write(0xBE); // Read Scratchpad

      Serial.print(” Data = “);
      Serial.print(present, HEX);
      Serial.print(” “);
      for ( i = 0; i < 9; i++){ // we need 9 bytes
      data[i] = ds.read();
      Serial.print(data[i], HEX);
      Serial.print(" ");
      }

      Serial.print(" CRC=");
      Serial.print(OneWire::crc8(data, 8), HEX);
      Serial.println();

      // Convert the data to actual temperature
      // because the result is a 16 bit signed integer, it should
      // be stored to an "int16_t" type, which is always 16 bits
      // even when compiled on a 32 bit processor.
      int16_t raw = (data[1] << 8) | data[0];
      if (type_s){
      raw = raw << 3; // 9 bit resolution default
      if (data[7] == 0x10) {
      // "count remain" gives full 12 bit resolution
      raw = (raw & 0xFFF0) + 12 – data[6];
      }
      }
      else{
      byte cfg = (data[4] & 0x60);
      // at lower res, the low bits are undefined, so let's zero them
      if (cfg == 0x00) raw = raw & ~7; // 9 bit resolution, 93.75 ms
      else if (cfg == 0x20) raw = raw & ~3; // 10 bit res, 187.5 ms
      else if (cfg == 0x40) raw = raw & ~1; // 11 bit res, 375 ms
      //// default is 12 bit resolution, 750 ms conversion time
      }

      //Cálculo da Temperatura
      celsius = (float)raw / 16.0;
      Serial.print(" Temp = ");
      Serial.println(celsius);
      lcd.setCursor(8,0);
      lcd.print(" ");
      lcd.print(celsius);
      lcd.print("C");
      }

  58. Jose Wilson Soares do Nascimento - 8 de abril de 2015

    Boa noite, gostaria de saber se posso adaptar para cronometrar por exemplo uma largada e chegada de algo ?

  59. PLT PROJETOS - 30 de março de 2015

    Bom Dia !
    Gostaria de saber como deixo os dias da semana em portugues no display, pois no meu aparece os dias em inglês e não estou conseguindo mudar, estou usando a biblioteca DS1307.h.

    • Wesley Ricci - 10 de abril de 2015

      Você tem que mudar a librarie inteira dele.. Procure por exemplo “Friday” em “DS1307.h” , “DS1307.cpp” e “keywords” .. e mude todos para “Sexta”, e faça isso com os outros dias da semana..

      Ou simplesmente mude os termos entre “aspas” no DS1307.cpp :
      switch (t.dow)
      {
      case MONDAY:
      output=”Monday”;
      break;
      case TUESDAY:
      output=”Tuesday”;
      break;
      case WEDNESDAY:
      output=”Wednesday”;
      break;
      case THURSDAY:
      output=”Thursday”;
      break;
      case FRIDAY:
      output=”Friday”;
      break;
      case SATURDAY:
      output=”Saturday”;
      break;
      case SUNDAY:
      output=”Sunday”;
      break;
      }

  60. sidnei - 25 de fevereiro de 2015

    boa noite, quando desligo o arduino deixando só o modulo 1307 ligado com a bateria, as vezes quando ligo no dia seguinte ele esta desregulada a hora,porque

  61. felipe rodrigues - 19 de fevereiro de 2015

    como fazer um despertador usando esse mesmo modulo RTC?

    • FILIPEFLOP - 21 de fevereiro de 2015

      Boa tarde Felipe,

      Você pode incluir um condicional (IF) dentro do programa para comparar a hora atual com uma hora pré-determinada. Ficaria mais ou menos assim :

      If (hora = hora_despertador)
      {
      //Comando para acender luz, tocar sirene, etc
      }

      Abraço.

      Adilson – Equipe FILIPEFLOP

  62. Pedro - 11 de fevereiro de 2015

    Pessoal , dê uma checada na pilha do módulo , pois a minha veio com carga bastante baixa com 0.5V, por isso não consegue manter o horário correto .

  63. Sérgio - 11 de fevereiro de 2015

    É possível adaptar essa placa com RTC em um Microcontrolador 8051?

  64. carlos - 25 de janeiro de 2015

    Olá, seria muito complicado usar esse código p/ um DS1302?
    Tenho um funduino mega2560 mas todos os codigos que copiei e colei da internet nao funcionam pois não estão pegando a hora no rtc.
    Alguém pode me ajudar?

    Grato
    Att
    Carlos

  65. Janaina - 8 de janeiro de 2015

    Olá, estou utilizando o modulo RTC em um arduino com função de logger, porém o código que uso não está setando a hora e a data correta. Sabe me informar o que preciso fazer?

    Aguardo, obrigada.

  66. Raphael - 2 de janeiro de 2015

    Boa tarde. Estou desenvolvendo um projeto, e gostaria de saber se tem como eu usar os dados de segundo, dia e ano separados.

    Exemplo: usar os segundos para tirar média de vazão de um sensor.

    Alguém poderia me ajudar ?

  67. Yusukke - 23 de dezembro de 2014

    Acompanhando este tópico, tentem estas dicas:
    1 – verifique a bateria, se esta ligada corretamente e se tem carga.
    2 – verifique se ligou corretamente o SCL e o SDA, muita gente inverte…
    3 – verifique o Baudrate no serial monitor. normalmente fica em 9600 baud
    E mais importante… se a montagem é em protoboard as vezes dá mau contato nas ligações
    gerando os caracteres estranhos citados…
    Boa sorte ^^

  68. Steffen - 10 de dezembro de 2014

    Eu tive o mesmo problema que a maioria dos colegas relatou. Fiz as conexões corretas, adicionei a biblioteca DS1307.h e digitei o sketch como explicado neste site, mas não certo… No Serial Monitor informava repetidamente:

    Hora : 27:85:85 Data : 85.85.@5 xxx

    Depois disso atualizei a IDE do Arduino para a versão 1.0.6 e o problema continuou. Então finalmente segui o conselho do Marcel e deu certo. A solução mesmo é usar o modelo utilizado no site do “Arduino e Cia” (ver abaixo). Nesse caso, será usado a biblioteca Wire.h que o Arduino já possui.

    http://www.arduinoecia.com.br/2013/04/real-time-clock-rtc-ds1307.html

    Boa sorte!

    • Ivanildo Bandeira - 21 de dezembro de 2014

      O meu esta com o mesmo problema, mas acontece somente quando eu conecto o modulo diretamente na protoboard, quando eu utilizo jumpers ele funciona perfeitamente. E a protoboard esta funcionando normalmente, o que torna mais estranho ainda.

  69. Ivanluiz - 1 de dezembro de 2014

    Adilson, Boa noite !

    Em busca na internet sobre o problema do meu relógio que adianta aproximadamente 5 segundos por hora, encontrei outra informação que pode ser importante divulgar.
    Parece que alguns relógios Tiny RTC i2c estão estourando as baterias CR2032. O motivo é que esses relógios devem usar a bateria LIR2032 (Recarregável) e não a CR2032 (Não recarregável). Para poder usar as CR2032 sem problemas deve-se retirar o diodo D1 e os resistores R4 e R6. Sendo que no lugar de R6 deve-se colocar um jamper.
    Segue um dos links sobre o assunto:
    http://www.ebay.com/gds/Tiny-RTC-I2C-modules-Arduino-/10000000178398866/g.html

    Sds,

    Ivanluiz

    • FILIPEFLOP - 10 de dezembro de 2014

      Boa tarde Ivan,

      Ótima informação, não tivemos relatos ainda de baterias danificadas, mas serve de alerta para quem for trocar a bateria desse módulo.

      Abraços !

      Adilson – Equipe FILIPEFLOP

  70. Relógio Digital com o módulo RTC DS1307 + CI MAX7219 e Dipaly de 4 Digitos | RoBoott - 27 de novembro de 2014

    […] seu Módulo RTC DS1307 seja novo, provavelmente você terá que acertar a hora dele, o Blog do Filipeflop tem uma material onde você pode acertar a hora do modulo e vê-la no monitor […]

  71. Luiz - 22 de novembro de 2014

    O que o colega diz deve ser o que ocorre comigo também:
    Hora : 27:85:85 Data : 85.85.@5 xxx
    o que devo fazer?

  72. Joubert - 18 de novembro de 2014

    Amigo, estou tentando comparar a data e hora atual trazida pelo DS1307 com uma inserida manualmente pelo usuário via botôes para o acionamento de um relé para ligar uma válvula, mas não consigo fazer uma comparação, pode me ajudar?

    if (rtc.getTimeStr() == 22) {
    digitalWrite(rele, HIGH);

    mas como é um ponteiro não tem dado certo

  73. Jones - 14 de novembro de 2014

    Estou procurando na internet mas nao acho o script correto, tenho o o RTC 1307 e gostaria que ele acionasse dois reles, sendo o promeiro acionado todos dias as 07h e desligado as 12h e outro rele acionado as 08h e desligado as 18h, parece simples mas nao to achando assim simples, so um mais completos com Display e ajustes por teclas.. eu gostaria so do script basico.

  74. claudio - 11 de novembro de 2014

    alguém sabe como fazer para comparar hora e minutos para fazer um alarme? fico no aguardo.

    • Ivanluiz - 20 de novembro de 2014

      Comigo deu certo assim:

      Criei uma variável

      String hora;

      Depois joguei nela a hora do relógio

      hora = rtc.getTimeStr();

      E logo sem seguita um if

      if (( hora == “12:00:00″ ) || ( hora == “18:00:00″ )) {
      Serial.println(“Alarme”);
      }

  75. leonardo - 3 de novembro de 2014

    Estou tendo um problema no meu modulo, nao sei se eh problema cm o modulo ou nao programação! seguinte, ta atrasando 2 segundos, alguem saberia me dizer o por que??

  76. Laercio - 1 de outubro de 2014

    Comprei um rtc liguei certinho como o exemplo e ele está adiantando 2 minutos a cada 12 horas o que pode ser?

  77. Thiago - 24 de setembro de 2014

    Boa Noite !

    Comprei com vocês um RTC DS1307, mas não está contando, somente aparece as informações DOMINGO 01.01.2000 — 00:00:00 e nao conta ajustei a hora mas aparece so na primeira linha nas seguintes não aparece volta a essa informação como resolver ?

  78. cledilandio - 16 de setembro de 2014

    Boa galera descobri mais uma, tentei ligar o rtc mais uma vez em um arduino não “original” e deu esse erro chato 85.85.5@ … peguei o mesmo rtc e coloquei em um “original” e funcionou normal, dai fiquei testando e fiz uma experiência que deu certo coloquei um potenciometro entre o rtc e o A5, e com uma resistencia baixa ele funcionou blz.

  79. Alex - 14 de setembro de 2014

    Funcionou blz. Adicionei uma função para setar a hora ao apertar um botão.
    Obrigado!

  80. meqlue - 4 de setembro de 2014

    amigo toda vez que o arduino for reiniciado a hora sera setada novamente???? ou seja sempre vaiser a hora que colocou no codigo?

    • Alex - 14 de setembro de 2014

      vc compila e envia o código para o arduino pela primeira vez com as linhas abaixo normalmente:
      rtc.setDOW(FRIDAY); //Define o dia da semana
      rtc.setTime(20, 37, 0); //Define o horario
      rtc.setDate(6, 6, 2014); //Define o dia, mes e ano

      uma vez feito isso, o RTC já está com a hora atualizada (lembre de deixar a hora certinha com seu relogio de pulso).

      Compile e envie o código para o arduino agora com essas linhas comentadas.
      /*
      rtc.setDOW(FRIDAY); //Define o dia da semana
      rtc.setTime(20, 37, 0); //Define o horario
      rtc.setDate(6, 6, 2014); //Define o dia, mes e ano
      */

  81. Gustavo - 21 de agosto de 2014

    DS1307 rtc(A4, A5);

    Está dando erro nessa linha o que devo fazer ???

    • FILIPEFLOP - 23 de agosto de 2014

      Boa tarde Gustavo,

      Qual erro a IDE aponta ? Você instalou a biblioteca normalmente ?

      Grato.

      Adilson – Equipe FILIPEFLOP

    • Márcio - 26 de setembro de 2014

      O meu tb esta dando este erro…

      sketch_sep26a:3: error: ‘DS1307′ does not name a type
      sketch_sep26a.ino: In function ‘void setup()':
      sketch_sep26a:8: error: ‘rtc’ was not declared in this scope
      sketch_sep26a:12: error: ‘FRIDAY’ was not declared in this scope
      sketch_sep26a:17: error: ‘SQW_RATE_1′ was not declared in this scope
      sketch_sep26a.ino: In function ‘void loop()':
      sketch_sep26a:27: error: ‘rtc’ was not declared in this scope
      sketch_sep26a:30: error: ‘FORMAT_SHORT’ was not declared in this scope

      • Alex Santos - 30 de setembro de 2014

        Acredito que faltou vc colocar a biblioteca DS1307 na pasta libraries.
        Baixe o arquivo que foi indicado no post e descompacte a pasta dentro da pasta libraries. Se estiver no windows o caminho vai ficar assim: C:\Users\usuario\Documents\Arduino\libraries\DS1307. Feito isso abra novamente a IDE do arduino e tente compilar.

  82. Marcio - 16 de agosto de 2014

    Olá, baixei a library sugerida no link do site http://www.henningkarlsen.com/electronics/library.php?id=34
    porém os dados lidos estão completamente errados:
    Hora: 27:85:85
    Data: 85:85:@5 xxx

    Encontrei alguma referencia na rede sobre essa hora errada, sugerindo que nao estou conseguindo ler a data do modulo. A biblioteca que baixei tem a seguinte versão:
    Version:
    1.0 4 Oct 2010 – initial release
    1.1 26 Jan 2012 – Added support for Arduino 1.0 IDE

    O que estou fazendo errado? Existe outra library que vc pode sugerir?
    Grato

  83. RAFAEL BORGES - 13 de agosto de 2014

    Aeh galera, testei no mega a principio não funcionou, mas aeh mudei os bps da serial para 57600 eaeh
    funcionou de boa!

  84. RICARDO - 13 de agosto de 2014

    Comigo não tá lendo nada. Aparece sempre as datas e as horas zeradas

  85. cledilandio - 11 de agosto de 2014

    tive o mesmo problema que os demais, só funciona quando tiro o negativo. Alguém já resolveu este problema.

  86. Daniel - 11 de agosto de 2014

    Sabe como setar a hora, e data?
    Tipo void SetaDS(…){}
    e chamar o comando para enviar os dados…estou utilizando String ou byte, não encontrei uma forma de enviar os dados…

    • FILIPEFLOP - 14 de agosto de 2014

      Boa tarde Daniel,

      Sim, você pode criar uma subrotina e copiar essa parte do código lá pra dentro :

      //As linhas abaixo setam a data e hora do modulo
      //e podem ser comentada apos a primeira utilizacao
      rtc.setDOW(FRIDAY); //Define o dia da semana
      rtc.setTime(20, 37, 0); //Define o horario
      rtc.setDate(6, 6, 2014); //Define o dia, mes e ano

      você só terá que definir como será a entrada de dados, se usará um display, botões, teclado, etc.

      Abraço.

      Adilson – Equipe FILIPEFLOP

  87. Rogerio alencar - 6 de agosto de 2014

    Precisa de resistor de pull-up ?

    o meu RTC ta atrasando..

  88. Rogerio alencar - 28 de julho de 2014

    Estou usando
    rtc.poke(1, 1);

    e quando eu uso rtc.peek(1) depois de desligar o arduino e ligar novamente e nao deixou salvo na memoria o valor!

    oq devo fazer ?

  89. Rogerio alencar - 27 de julho de 2014

    Como saber se a data ja foi configurada e não precisa configurar mais ?

    • Adilson - 29 de julho de 2014

      Boa noite Rogério,

      Você pode retirar o comando de escrita da hora e tentar efetuar uma leitura. São essas 3 linhas do programa :

      rtc.setDOW(FRIDAY); //Define o dia da semana
      rtc.setTime(20, 37, 0); //Define o horario
      rtc.setDate(6, 6, 2014); //Define o dia, mes e ano

      Adilson – Equipe FILIPEFLOP

  90. Mauro Lana - 26 de julho de 2014

    Quando eu fui fazer o uplound deu o seguinte erro:

    sketch_jul26a:8: error: ‘DS1307′ does not name a type
    sketch_jul26a.ino: In function ‘void setup()':
    sketch_jul26a:13: error: ‘rtc’ was not declared in this scope
    sketch_jul26a:17: error: ‘FRIDAY’ was not declared in this scope
    sketch_jul26a:22: error: ‘SQW_RATE_1′ was not declared in this scope
    sketch_jul26a.ino: In function ‘void loop()':
    sketch_jul26a:32: error: ‘rtc’ was not declared in this scope
    sketch_jul26a:35: error: ‘FORMAT_SHORT’ was not declared in this scope

    O que devo fazer?
    Desde ja agradeço a todos

    • Adilson - 29 de julho de 2014

      Boa noite Mauro,

      Você baixou e instalou a biblioteca ?

      Adilson – Equipe FILIPEFLOP

      • Eduardo - 6 de agosto de 2014

        Estou enfrentando o mesmo problema, já tentei varias bibliotecas, já troquei a bateria, já refiz os pontos de solda mas o RTC continua mostrando valores incorretos e quando ele aparenta mostrar algo coerente, pode-se ver que o tempo nao está contando, sao sempre os mesmos numeros.

        • FILIPEFLOP - 14 de agosto de 2014

          Boa tarde Eduardo,

          Se você já verificou as conexões e principalmente a solda, pode ser que o seu módulo esteja com defeito.

          Se foi adquirido aqui na FILIPEFLOP, por favor entre em contato com o departamento de vendas.

          Grato.

          Adilson – Equipe FILIPEFLOP

  91. Rogerio alencar - 11 de julho de 2014

    Essa lib funciona para usar no Attiny85?
    Teria alguma lib que funcione no Attiny85?

  92. Marcel - 7 de julho de 2014

    Kra, comigo também não funcionou, e pelo que pude perceber o problema está na library pois usando sem a library (Um código gigante que consegui na web) funciona perfeitamente.

  93. Carlos - 6 de julho de 2014

    O que o colega diz deve ser o que ocorre comigo também:
    Hora : 27:85:85 Data : 85.85.@5 xxx

  94. Getulio Paulino - 30 de junho de 2014

    Não deu certo! Na hora de mostrar a hora na janela do monitor da porta COM, mostra horário e data fora do comum.

    • filipeflop - 3 de julho de 2014

      Olá Getulio,
      Você se atentou a parte do post que diz:
      No programa, a parte do código que contém os comandos
      rtc.setDOW(MONDAY);
      rtc.setTime(16, 30, 47);
      rtc.setDate(5, 6, 2014);
      só deve ser utilizada para setar a hora e data do RTC DS1307. Depois disso, essas linhas podem ser comentadas ou excluídas e o programa deve ser novamente carregado no Arduino.

      Se sim, me dá um toque e podemos ver melhor o teu problema.
      Abraço!

Deixe uma resposta