Como preencher os argumentos da função rtc.adjust(DateTime F(__DATE__), F(__TIME__)));

No sketch abaixo não consegui preencher corretamente a função de ajuste.

Segui o exemplo e coloquei (2017, 11, 6,22,35,15), compilou mas continua apresentando

os valores (2014,1,21,3,0,0).

Onde estou errando (funciona perfeitamente mas não muda os valores de tempo e data) ?

No mesmo sketch a função now(); também não está funcionando apesar de compilar e

carregar.

MUITO OBRIGADO PELA ATENÇÃO

#include <Wire.h>
#include "RTClib.h"
RTC_DS3231 rtc;
char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
void setup () {
#ifndef ESP8266
while (!Serial); // for Leonardo/Micro/Zero
#endif
Serial.begin(9600);
delay(3000); // wait for console opening
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
while (1);
}
if (rtc.lostPower()) {
Serial.println("RTC lost power, lets set the time!");
// following line sets the RTC to the date & time thi.adjust(Dates sketch was compiled
// rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
//rtc.adjust(DateTime(2017, 11, 6, 22, 35, 15));
// 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(2014, 1, 21, 3, 0, 0));
}
}
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(daysOfTheWeek[now.dayOfTheWeek()]);
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);
}

Exibições: 2104

Responder esta

Respostas a este tópico

Bom dia LD,

Recomendações:


1. Leia http://labdegaragem.com/forum/topics/sugest-o-de-como-postar
2. Remova seu sketch da área de texto do seu tópico;
3. Comente as linhas do seu sketch. Fica difícil descobrir o que vc quer fazer com cada linha.
4. Clique em : " Deseja carregar arquivos? " e depois em " Escolher arquivo" e anexe o arquivo
     com o seu sketch.

RV

Obrigado pela preciosa ajuda

Leo, boa noite!

Não entendi a parte do código que você fala está toda comentada, ou seja, não vai funcionar mesmo.

Para funcionar, precisa descomentar (tirar os //).

Escolha uma das formas de atualização e descomente.

Ou esse código não está atualizado?

O melhor é fazer como o Rui falou e anexar o código, pois assim fica mais fácil de analisar

Cintra, obrigado pela atenção.
Eu não soube explicar.
O código funciona perfeitamente e apresenta os dados da linha "d" abaixo.
Eu gostaria de saber a forma correta de apresentar os argumentos da função da linha "a",
pois eu apresentei conforme linha "b" e compilou e carregou apresentando porém conforme
linha "d", como já citei.
Procurei em vários lugares mas não achei a forma correta de preencher tal função.

a. rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
b. rtc.adjust(DateTime(2017, 11, 6, 22, 35, 15));
c. January 21, 2014 at 3am you would call:
d. rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));

Leo, boa noite!

Para setar a data e hora com o exemplo da linha a, faça exatamente igual ao que está escrito:

rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));

Explicando:

Essa forma vai ajustar a hora do RTC com a hora do computador em que você está compilando o sketch!!!

Explicando __DATE__ e __TIME__ são constantes que vão ser substituídas durante a compilação do código, usando a data e hora do computador que está compilando.

O F() que envolve essas constantes é a macro F, usada para economizar memória.

Obrigado.
Estou indo fazê-lo.

Leo, bom dia!

Outro ponto que deve levar em conta é o IF abaixo:

if (rtc.lostPower()) {

Ele só vai entrar nesse trecho do código quando o RTC é ligado pela primeira vez OU o rtc ficou sem energia e esgotou a bateria.

Ou seja, raramente vai executar esse trecho.

Por isso, para testar essas formas de atualização de hora, faça fora do IF para testes.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço