Prezados,

Tô aqui com um data logger usando UNO, SD CARD e RTC. Eu queria gravar um arquivo no SD CARD chamado de DATA.txt e nele digitar uma linha assim: 2021,04,05,10,06,00 (sendo ano, mês, dia, hora, minuto, segundo)

Eu tenho um push-button no pino 6 settado como INPUT_PULLUP, chamo simplesmente de: chave

Se eu energizar o sistema com este push-button pressionado o arduino deve ir lá e ler o arquivo DATA.txt dentro do SD CARD, atualizar o RTC e em seguida apagar o arquivo DATA.txt

Aí eu fiz assim, abaixo da linha rtc.adjust principal que atualiza o RTC colocando os valores do momento da compilação, criei uma segunda linha chamando uma função void que chamei de data(), mas deu erro, não aceitou compilar:

// rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
// if (digitalRead(chave) == LOW)); {

   rtc.adjust(void data());

   }

E mais abaixo criei a tal void:

void data() {
digitalWrite(CS_SD,LOW);
myFile=SD.open("DATA.txt", FILE_READ);
delay(1000);

myFile=SD.open("DATA.txt", FILE_DELETE);

myFile.close();
digitalWrite(CS_SD,HIGH);
delay(1000);
}

Sei que tá muito errado, mas tentei, e por isso estou aqui. Alguém corrige ? ...e também o botão, chave, não está programada para ser lida somente ao energizar o sistema

Muito grato

Exibições: 77

Responder esta

Respostas a este tópico

Olá Sergio! Sou bem iniciante com arduino também. Tenho uma noção de programação e andei estudando um pouco sobre o sketch para utilizar SD e RTC porque precisaria desses componentes para um projeto que estou tentando desenvolver.

O código que copiaste está assim no IDE (com as duas primeiras linhas comentados)? e chegaste a incluir as bibliotecas do SD e RTC?

Agradeço os comentários. Mas fui quebrando a cabeça aqui e inclui um segundo push-button no meu circuito e criei uma void data() e ao pressionar este novo push-button eu consigo ler na serial o conteúdo de um arquivo gravado manualmente no cartão SD. Gravei estas informações: 2021,04,05,10,06,00. Leio elas com sucesso pela serial. Faltam duas dúvidas: 1) Qual comando usa-se para deletar um arquivo gravado no cartão SD. 2) Como criar um rtc.adjust() de tal forma que busque dentro do cartão SD estas informações no arquivo criado manualmente (batizei de DATA), 2021,04,05,10,06,00. Pretendo atualizar o RTC através do arquivo DATA.txt e depois apagá-lo. 

OK. Já consegui remover o arquivo dentro do cartão SD usando a função SD.remove ("data.txt"). Sobrou apenas a dúvida de como criar um rtc.adjust() que ajuste o RTC usando os dados contidos no arquivo DATA.txt dentro do cartão SD. Alguém sabe ?

Dentro da minha void data() coloquei uma linha assim: rtc.adjust(DateTime(myFile.read()));

E dentro do cartão SD criei um DATA.txt assim: 2021, 04, 05, 16, 21, 00 mas pela serial que antes estava lendo corretamente agora passou a ler assim: 22,0,0,1,2,0 e notei que o RTC modificou data e hora para 06/02/2106,06:29:10

Ou seja, tá mudando o RTC porém bagunçado. Vou dar um tempo nos miolos, descansar os olhos e torcer para que alguém consiga e queira ajudar. Só falta este detalhe.

Esta é a minha void data(), toda vez que aperto um botão ela lê o arquivo DATA.txt e mostra na serial o seguinte conteúdo:

2021, 05, 04, 16, 51, 10 (é o que tem gravado no arquivo), mas não está atualizando o RTC, porém se ali na linha de comando o RTC.adjust eu colocar entre parênteses estes dados 2021, 05, 04, 16, 51, 10 aí o RTC é atualizado. Ou seja, estes números o RTC obedece, mas não lê do arquivo DATA.

void data() {
myFile=SD.open("DATA.txt", FILE_READ);
while (myFile.available()) {
Serial.write(myFile.read());
}
rtc.adjust(DateTime(myFile.read()));
delay(500);
myFile.close();
// SD.remove("DATA.txt");
delay(500);
}

 

A solução,

https://forum.arduino.cc/index.php?topic=388430.0

 

Este tópico já pode ser fechado

A IDE não compilou, pois você utilizou a função criada por você de forma errada. Você não deve por void na chamada da função. Coloque apenas o nome da função junto com abre-fecha parênteses. Exemplo: minhaFuncao()

Boa tarde. 

Algumas referências: 

RTC – Real Time Clock DS1302, 1307 e 3231

https://blog.eletrogate.com/rtc-real-time-clock-ds1302-1307-e-3231/

Guide for Real Time Clock (RTC) Module with Arduino (DS1307 and DS3231)

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

Guide to SD Card Module with Arduino

https://randomnerdtutorials.com/guide-to-sd-card-module-with-arduino/

Gravação de cartão micro SD com arduíno – Faça seu Datalogger!

https://blog.eletrogate.com/gravacao-de-cartao-micro-sd-com-arduino/

Arduino Temperature Data Logger with SD Card Module

https://randomnerdtutorials.com/arduino-temperature-data-logger-wit...

RSS

© 2021   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço