Bom dia a todos (as, es) venho uma vez mais solicitar vosso auxilio. 

Estou trabalhando em um projeto pessoal para passar o tempo e me deparei com um problema, uso RTC3231, um arduino mega com uma tela nextion 3.5 (com fonte externa) pra exibição dos valores e ate ai tudo ia bem, mas ao tentar setar a hora e data no RTC que esta errada com os comandos abaixo nada acontece:

rtc.setDOW(THURSDAY); 
rtc.setTime(10, 51, 1); 
rtc.setDate(23, 12, 2021);

Carrego o programa no arduino sem qualquer erro, a tela para de comunicar, congelando os valores que mostrava, comento o código de setup e carrego novamente, a tela volta a ler os dados, porem, a data e hora seguem desatualizados como estavam antes.

Testei desligar a tela, desativa-la, usar outro programa que não possui esta tela implementada, nada parece "setar" o RTC, removi a bateria traseira do RTC, ele resetou mas segue não atualizando, troquei a biblioteca que tinha do DS3231 por outra que baixei da internet, o resultado é o mesmo, poderia ser um problema do RTC?

OBS: obtenho leituras iguais tanto em serial monitor como na tela, logo não é um tema de atualização de tela.

Exibições: 1015

Responder esta

Respostas a este tópico

enviar.txt

Boa tarde quanto a JC2 sem problemas, segue anexo o codigo, caso de algum B.O no anexo colo ele aqui abaixo, ainda esta pequeno:

// --- Biblioteca Auxiliar ---
#include <Nextion.h> //biblioteca Nextion
#include <DS3231.h> //biblioteca RTC

/*---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/

// --- Mapeamento de Hardware ---

#define led 13 //led onboard pino digital 13


DS3231 rtc(SDA, SCL);
char buffer[50];

/*---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/

// --- Declaração de Objetos ---
//page id:0, id componente:1, nome do componente: "bt0"

NexText Hora_Atual = NexText(0, 8, "t3"); //caixa de texto Hora do RTC
NexText Min_Atual = NexText(0, 9, "t4"); //caixa de texto Minuto do RTC
NexText Seg_Atual = NexText(0, 10, "t5"); //caixa de texto Segundo do RTC
NexText Dia_Atual = NexText(0, 11, "t6"); //caixa de texto Dia do RTC
NexText Mes_Atual = NexText(0, 12, "t7"); //caixa de texto Mes do RTC
NexText Ano_Atual = NexText(0, 13, "t8"); //caixa de texto Ano do RTC

NexDSButton bt0 = NexDSButton(0, 5, "bt0");

/*---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/

// --- Variáveis Globais ---

// Variaveis diversas


char txt3[10], //Hora
txt4[10], //Minuto
txt5[10], //Segundo
txt6[10], //Dia
txt7[10], //Mes
txt8[10]; //Ano


uint32_t ds_var; //armazena o estado do botão


/*---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/

// --- Configurações Iniciais ---
void setup(){


/*---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
//setup de hora, e data RTC

//rtc.setDOW(THURSDAY); // Altere o dia da semana SUNDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY e SATURDAY
//rtc.setTime(10, 51, 1); // Altere o tempo (formato de 24horas)
//rtc.setDate(23, 12, 2021); // Dia, mês, Ano

/*---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
//Habilita monitor serial

Serial.begin(9600);

/*---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
//Inicializa dispositivos externos

//Inicializa RTC
rtc.begin();

//Inicializa tela Nextion
nexInit();

/*---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
//Definição de hardware

pinMode(led, OUTPUT); //defino saída para o led
digitalWrite(led, LOW); //inicia desligado


} //end setup

/*---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/

// --- Loop Infinito ---
void loop(){

/*---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
// --- Variaveis RTC ---

Time Relogio = rtc.getTime(); // Instancia o objeto myClock e obtem o horario
int myHour = Relogio.hour; // Seleciona a hora
int myMin = Relogio.min; // Seleciona o minuto
int mySec = Relogio.sec; // Seleciona o segundo
int myDay = Relogio.date; // Seleciona a hora
int myMonth = Relogio.mon; // Seleciona o minuto
int myYear = Relogio.year; // Seleciona o segundo

/*//Mostra as informações no Serial Monitor
Serial.print("Hora: ");
Serial.print(myMin);
Serial.println(" ");
delay (200);
*/

/*---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
//Atualização dos valores do Nextion

//Hora
Hora_Atual.setText(txt3);

//Minuto
Min_Atual.setText(txt4);

//Segundo
Seg_Atual.setText(txt5);

//Hora
Dia_Atual.setText(txt6);

//Minuto
Mes_Atual.setText(txt7);

//Segundo
Ano_Atual.setText(txt8);

/*---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/

//Converte inteiros para string

// Hora RTC
memset(txt3, 0, sizeof(txt3));
itoa(myHour, txt3, 10);

// Minuto RTC
memset(txt4, 0, sizeof(txt4));
itoa(myMin, txt4, 10);

// Segundo RTC
memset(txt5, 0, sizeof(txt5));
itoa(mySec, txt5, 10);

// Dia RTC
memset(txt6, 0, sizeof(txt6));
itoa(myDay, txt6, 10);

// Mes RTC
memset(txt7, 0, sizeof(txt7));
itoa(myMonth, txt7, 10);

// Ano RTC
memset(txt8, 0, sizeof(txt8));
itoa(myYear, txt8, 10);


/*---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/

bt0.getValue(&ds_var);
if(ds_var>0) digitalWrite(led, HIGH);
else digitalWrite(led, LOW);

/*---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/


} //end loop

Olá, João Carlos.

   Consultei um amigo muito ativo aqui do LdG sobre o seu código, e ele acha que o problema é que você não inicializa o RTC antes de tentar ajustar.

   Segundo este amigo, a instrução rtc.begin() teria de estar antes das linhas em que você faz o ajuste, provavelmente 57, 58 e 59. E, claro, descomentar estas linhas.

D.T. Ribeiro

P.S.: Este amigo é daqueles que fazem questão de que os postadores sigam regras de "bem postar", por exemplo, anexar o código ao invés de colá-lo no corpo do post.

Bom dia, obrigado era isso mesmo, não posso setar algo que ainda não esta ativo, sobre colar o código, por não ser lá muito grande pensei que poderia facilitar a vida ter uma segunda forma de visualizar, numa próxima vez não farei isso tendo em vista as regras do bem postar, uma vez mais obrigado.

Resolvido.

Olá, João Carlos!

   De nada! ( em nome do meu amigo ).

   E desculpe as brincadeiras, mas acho que aqui, no LdG, todos aprendem, pois, como disse Robert Heinlein:  "Quando um ensina, dois aprendem." 

   IMHO, esta é a filosofia do LdG.

   Um grande abraço e um abençoado Natal para ti e todos os teus.

D.T. Ribeiro.

P.S. Ah, e por gentileza, edita o título do tópico e acrescenta a palavra RESOLVIDO para facilitar a vida de outros garagistas que puderem ter o mesmo problema, ou semelhante.

Desde já, grato!

Boa tarde,

Sempre recomendo a todos. Se o projeto está com problemas, separe so dispositivos conectados no Arduino e teste um de cada vez. 

Monte e teste esse projeto:

https://randomnerdtutorials.com/guide-for-real-time-clock-rtc-modul...

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço