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);
}
Tags:
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
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.
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.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por