Pessoal, em um outro topico que eu criei, muita gente estava com dificuldades em fazer a configuração de data e hora do shield RTC. Segue o codigo atualizado para fazê-lo, com link da biblioteca utilizada.

A configuração é feita toda pelo monitor USB do arduino.

/*
This example firstly waits for Serial input and then sets date and time on DS1307
Real-Time Clock based on what user sent.
Secondly it reads the date and time from DS1307 Real-Time Clock
and send this information to your PC using USB/Serial (like the ReadDate example).
Make the connections below, upload the code and open Serial Monitor.

Made by Álvaro Justen aka Turicas

Pin connections on DS1307 module:

[DS1307] <--> [Arduino]
5V <--> 5V
GND <--> GND
SQW <--> (not connected)
SCL <--> Analog Input 5
SDA <--> Analog Input 4

This software is free software.
Download Biblioteca DS1307: https://drive.google.com/file/d/0B5Yz9vPsQ2_ObVJfSFM0ZVF6Wkk/view?u...
*/

#include <Wire.h>
#include <DS1307.h>

char dateTime[22];
int RTCValues[7], i = 0, year, month, dayOfMonth, dayOfWeek, hour, minute,
second;

void setup() {
Serial.begin(9600);
Serial.println("Please enter date and time in the format \"YYYY-MM-DD HH:MM:SS D\",");
Serial.println("Where D is the number of the day of week (0 = Sunday, 6 = Saturday).");
Serial.println("Example: 2011-04-23 02:25:27 6");
DS1307.begin();

while (i < 21) {
if (Serial.available()) {
char c = Serial.read();
dateTime[i] = c;
i++;
}
}
dateTime[i] = '\0';

year = 10 * (dateTime[2] - 48) + (dateTime[3] - 48);
month = 10 * (dateTime[5] - 48) + (dateTime[6] - 48);
dayOfMonth = 10 * (dateTime[8] - 48) + (dateTime[9] - 48);
dayOfWeek = (dateTime[20] - 48);
hour = 10 * (dateTime[11] - 48) + (dateTime[12] - 48);
minute = 10 * (dateTime[14] - 48) + (dateTime[15] - 48);
second = 10 * (dateTime[17] - 48) + (dateTime[18] - 48);

DS1307.setDate(year, month, dayOfMonth, dayOfWeek, hour, minute, second);
Serial.println("Date and time set!");
Serial.println("Reading data from RTC...");
}

void loop() {
DS1307.getDate(RTCValues);
sprintf(dateTime, "20%02d-%02d-%02d %02d:%02d:%02d", RTCValues[0],
RTCValues[1], RTCValues[2], RTCValues[4], RTCValues[5],
RTCValues[6]);
Serial.print(dateTime);
Serial.print(" - day of week: ");
Serial.println(RTCValues[3]);

delay(1000);

}

Exibições: 948

Responder esta

Respostas a este tópico

Pessoal, alguém sabe porque o relógio fica dessincronizando ao longo dos dias? Tipo uma semana depois em funcionamento já está com alguns minutos de diferença...

Resolvido. Vou comprar o DS3231 conforme sugestão de um amigo no outro topico! A precisão do cristal é muito superior e deve resolver meu problema.

Valeu!

   Caso seu projeto tenha conexão com a internet, outra sugestão seria utilizar um servidor NTP. Dessa forma você tem um horário sincronizado e confiável e ainda economiza em hardware.

Hmmm, nao conhecia! Uso o ethernet-shield... Vou dar uma pesquisada pra ver se é facil configurar NTP. Valeu!

    É super simples!


    Em resumo, um Servidor NTP é uma referência para sincronização de relógios e tarefas que necessitam de confiabilidade na marcação do tempo, como servidores de logs.

    Além de te retornar um horário confiável, não tem necessidade de você ter um hardware dedicado para isso. Dá uma olhada na biblioteca NTP para Arduino.

Obrigado Joao.

Só uma duvida: eu uso o RTC com DS1307 para comparar hora e minuto com valores pre-determinado, para a finalidade de simulação de presença residencial, acionando os reles das lampadas de casa.

Usando o NTP eu também consigo fazer um "if" na hora&minuto do NTP para acionar o rele na hora&minuto que eu quero?

Sim, consegue.

Seguem alguns exemplos:

https://portal.vidadesilicio.com.br/protocolo-de-tempo-ntp-esp/

https://www.fernandok.com/2018/12/nao-perca-tempo-use-ntp.html

Foram empregados ESPs, mas a programação não difere para o Arduino.

Mário boa tarde, 

Nesses dois tutoriais meus você pode obter a data e hora através de servidores NTP. 

https://blog.eletrogate.com/nodemcu-esp12-usando-arduino-ide-2/

https://blog.eletrogate.com/conhecendo-o-esp32-usando-arduino-ide-2/

MSEJS, boa tarde.

Uma recomendação: Não cole seu código na área de texto do seu tópico.

Remova o que colou e anexe-o como um arquivo.

RV

RSS

Destaques

Registre-se no
Lab de Garagem
Clicando aqui

Convide um
amigo para fazer
parte

curso gratis de arduino

© 2019   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço