Olá pessoal.

Estou usando o RTC DS 1307 que por sinal funcionou por mais ou menos uma hora normal, configurando a data e relógio certinho. Porém, depois não consegui mais reescrever mais. Estou monitorando pelo Serial Monitor e realmente posso resetar, reinstalar o programa que funcionava antes e nada.

Não sai mais disso: 2099/10/10 1:3:20

Alguém já teve essa experiência e pode me ajudar?

Será problema no shield ou esqueci de fazer algo?

E estou usando esse shield do URL :

http://produto.mercadolivre.com.br/MLB-587236214-shield-relogio-tem...

Este é o código que estou utilizando, sendo um dos exemplos da biblioteca "RTClib.h"

// Date and time functions using a DS1307 RTC connected via I2C and Wire lib

#include <Wire.h>
#include "RTClib.h"

RTC_DS1307 rtc;

void setup () {
  Serial.begin(57600);
#ifdef AVR
  Wire.begin();
#else
  Wire1.begin(); // Shield I2C pins connect to alt I2C bus on Arduino Due
#endif
  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(F(__DATE__), F(__TIME__)));
    // This line sets the RTC with an explicit date & time, for example to set
    // January 21, 2014 at 3am you would call:
    rtc.adjust(DateTime(11, 9, 2014, 14, 2, 9));
  }
}

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();
    
    Serial.print(" since midnight 1/1/1970 = ");
    Serial.print(now.unixtime());
    Serial.print("s = ");
    Serial.print(now.unixtime() / 86400L);
    Serial.println("d");
    
    // calculate a date which is 7 days and 30 seconds into the future
    DateTime future (now.unixtime() + 7 * 86400L + 30);
    
    Serial.print(" now + 7d + 30s: ");
    Serial.print(future.year(), DEC);
    Serial.print('/');
    Serial.print(future.month(), DEC);
    Serial.print('/');
    Serial.print(future.day(), DEC);
    Serial.print(' ');
    Serial.print(future.hour(), DEC);
    Serial.print(':');
    Serial.print(future.minute(), DEC);
    Serial.print(':');
    Serial.print(future.second(), DEC);
    Serial.println();
    
    Serial.println();
    delay(1000);
}

Exibições: 4028

Responder esta

Respostas a este tópico

Tira o interrogação do if (! rtc.isrunning()) e grave o Arduino.

Se isso não der certo tire a bateria, espere um pouco, coloque a bateria de novo e repita a gravação.

Fazendo isso você vai estar forçando o RTC a voltar a funcionar.

Sempre faço isso com o meu quando trava

Rodrigo, vou ficar te devendo essa, utilizo meu RTC sem visor, então nunca tentei configurar ele via botões,  

mas veja se estes três sites atendem a sua expectativa (caso você já não tenha visto).

http://www.seriallink.com.br/forum/viewtopic.php?f=24&t=1495#.V...

http://labdegaragem.com/profiles/blogs/projeto-arduino-como-rel-gio

http://www.oarduino.com/projeto-relogio-lcd-com-rtc-ds1307-e-arduin...

http://labdegaragem.com/video/acertando-rtc-via-hardware-com-arduino

Alguma duvida na execução de algum item talvez eu possa ajudar, mas testa ai primeiro

Muito obrigado Tiago.

Mas tenho outra dúvida, em muitos sites falavam que a bateria de lítio de 3V que vem neste shield.

E só para guardar as variáveis correspondes a contagem e continuar onde parou?

Em vários lugares falaram que a contagem continuava normal mesmo desligando o circuito do microcontrolador, desde que a bateria estivesse boa.

Rodrigo, para o RTC ter uma boa precisão de medição é necessário ter a bateria, ao mesmo tempo ela torna o circuito do RTC é independente do Arduíno, tendo um funcionamento continuo de aproximadamente 10 anos independente do uso. Ou seja, o RTC nunca para de contar o tempo.

Você poderia utilizar o próprio Arduíno como RTC, mas ele não possuiria a segurança que o RTC possui de não sofrer oscilações na contagem em função do uso ou disponibilidade de energia. Por isso ele é uma ferramenta  interessante em automação de rotinas. 

Certo.

Porque verificando pelo serial monitor a contagem, quando eu desconecto a energia do RTC ele para a contagem. Daí quando o realimento ele continua aonde parou por causa da bateria.

Vou testar melhor pelo o lcd para ver se quando desenergizar e depois religar o circuito, não interfira na configuração da data e do tempo.

Mas valeu mesmo Tiago.

Última coisa, você tem alguma dica para eu incrementar cinco botões para eu configurar a data e o horário, utilizando essa mesma biblioteca RTClib.h?

No primeiro link da seriallink foi utilizado a RTC lib, você poderia editar esse código, ele está um tanto simples, só que ele possui um botão de seta para cima e seta para baixo, mas está bem simples.

Obrigado pela força cara!

Valeu!

Tranquilo, bom projeto ai!

Então Tiago, fiz os teste com esses shield na prática, tanto na IDE do arduino e no CCS no pic e realmente, ele não conta se o circuito do microcontrolador desligar. E só continua onde parou, ou seja, se vc desligar a alimentação do circuito, por exemplo: 10:00 e depois de meia hora ligar, ele volta às 10:00. Sem a bateria ele muda para qualquer horário.

Estou lendo sua folha de dados para verificar se realmente ele tem essa função como dizem em alguns site.

Se você souber de algo a respeito, por favor, me responda.

Para o uso do RTC é essencial o uso da bateria, nunca tive problema do RTC parar de funcionar quando é desligado do CI, olha que tenho uns 4 aqui em casa, uma shield, módulo e dois módulos que eu mesmo montei. 

não sei se faz tempo que você comprou mas acho que você deveria entrar em contato com quem vendeu a shield, se possivel, pois acho que é problema de hardware.

Blz Thiago?

Estou trabalhando neste alimentador, estou montando agora o sensor de peso. Mas fiz testes com o potenciômetro e deu certo. Este aqui é por nível usando sonar, mas falta uns ajustes no programa neste modo.

Confira:

https://www.youtube.com/watch?v=xM_m4hMdb1o

Falou!

Rodrigo, está ficando interessante o seu projeto, de inicio achei exagero colocar o sensor ultrassônico, contudo olhando bem, é possível configurar ele em caso o animal não consuma toda a ração o alimentador pode apenar repor a diferença.

Bom projeto, obrigado pelo feedback

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço