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

Muito bom Rodrigo, o forum esta ai pra isso, boa sorte com o projeto

Então Tiago, é o chato novamente kkk.

Estou compreendendo realmente o que está acontecendo. Realmente o funcionamento do shield é igual ao que vc falou. O  problema está no meu programa que não está acessando completamente a memória interna do DS 1307. quando religo o Arduino Duemilanove ou Pic, transcrevem o código do início e não lê a informação do ds1307 pelo barramento I2 C.

Vc conseguiria me enviar este seu programa que vc me mostrou no You Tube pra eu testá-lo e conferir se era isso ou defeito de shield pra variar?

Duvido que vá resolver visto que fiz meu código em cima do exemplo do RTClib, vc tem que procurar algo sobre a Eprom e sua comunicação via serial I2C, visto que tera que controlar o DS1307 e a Eprom pela mesma porta analógica, o mais provável é que deve ter uma biblioteca para isso, pq esse RTC é bem comum.

de toda forma segue anexo

Anexos

Muito obrigado cara. Vc realmente está me ajudando muito.

Essa semana estou meio ocupado, mas assim que puder envio respostas.

Descobri o problema no arduino.

Como eu tinha deletado a função if (! rtc.isrunning()) porque o programa tinha travado e o tempo não configurava, então sem ela o shield RTC não responde para o microcontrolador em que tempo está, daí  reseta tudo quando o microcontrolador é desenergizado. Essa função serve para o shield RTC transmitir os dados nele armazenado e transmitir para o microcontrolador pegar a informação e mostrar.

Coisa besta, fiquei mexendo no Pic tentando acertar e esqueci de analisar o problema no Arduino.

Agora o mais difícil resolver isso no CCS Pic. Sendo que é o mesmo problema.

A única diferença que tinha no seu programa para o meu, praticamente é que o meu mostra o dia da semana. E também estou fazendo um Alimentador automático que a pessoa programa até três ciclos de tempo daí aciona uma saída que será monitorada por um sensor de pressão.

Muito obrigado Tiago me deu maior força. Se vc souber de alguma coisa a respeito deste mesmo shield ou ds1307 no Pic usando CCS, por favor me responda.

Obrigado.

Interessante, se possível gostaria de ver o seu projeto, o seu alimentador é para que tipo de animal?

Quanto ao PIC não possuo experiencia, mas se achar algo posto aqui.

Então cara, o primeiro protótipo será para cães. Mas depois vou adaptá-lo para qualquer criação de animais. Bastando só modificar a parte mecânica. Mas Também  quero fazer com a solenoide para completar água e comida para animais.

Quando eu terminar postarei aqui como ficou o projeto. Desenvolvi a fonte e agora estou  fazendo a programação da interface. Pretendo fazer com o Pic 16F877A que sai mais em conta do que fazer com o Atmega 328P.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço