Tratar um valor que vem do módulo ds3231 e salvar em um micro SD

Estou usando o Arduino uno junto com o módulo ds3231 e um de micro sd, eu estou salvando as informações do módulo em uma variavel String (motivo: foi o jeito que encontrei de salvar no sd). Eu preciso filtrar a informação, gostaria de pegar cada valor separadamente, por exemplo: 30/10/2023, e pegar somente o dia, isso seria para o horário tbm, filtrar somente os minutos ou horas.
Este é o meu código:

#include <DS3231.h>
#include <SPI.h>
#include <SD.h>

#define CS 4 // Porta SD
DS3231  rtc(SDA, SCL); // Cria o objeto DS3231

File arquivo;

//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------//
    
void setup() {   
  Serial.begin(9600); 
  SPI.begin();
}
void loop() {

  if(!SD.begin(CS)){
    Serial.println("Conecte o módulo SD corretamente");
    return;
  }

  String data = "";
  Serial.println("Captando a data...");
  
   Serial.begin(115200);
    rtc.begin();
    Serial.print(rtc.getDateStr()); // Imprimir data
    data += rtc.getDateStr();
    Serial.print(" - ");
    data += " - ";
    Serial.print(rtc.getTimeStr()); //Imprimir hora
    data += rtc.getTimeStr();

  Serial.begin(9600);
  Serial.println("Esta é a data e hora exata: "+data);



  arquivo = SD.open("Teste.txt", FILE_WRITE);//Cria e insere dados dentro do arquivo, caso o arquivo exista ele irá ser aberto.
  if(arquivo){
    Serial.println("Escrevendo no arquivo...");
    arquivo.println("Este é o Horário registro: "+data);
    arquivo.close();
  }else{
    Serial.println("Erro ao abrir o arquivo para gravar");
    return;
  }
    data = "";
    delay(3000);
}
//**********************************************************************************************************************************************************************************//
    // comandos do ds3231
    //rtc.setDOW(WEDNESDAY);     // seta o dia da semama em ingles
    //rtc.setTime(0, 0, 0);     // seta a hora 12:00:00 (formato de 24h)
    //rtc.setDate(1, 1, 2023);   // seta o dia mes ano
//**********************************************************************************************************************************************************************************//

Consegui.
Se alguém tiver a mesma dúvida esta aqui a logica para tratar o valor.

 String dia = "01.11.2023";
    char dataALT[11];

  dia.toCharArray(dataALT,10);

  for(int t = 0; t < 10; t++){
    if(dataALT[t] == '.'  ){
      dataALT[t] = '-';
    }
  }
Serial.println(dataALT);

Explicação:
Basicamente tem 2 variáveis a string dia e um char dataALT (data alterada). você passa o valor do dia para dataALT na linha 3, e depois olha posição por posição do array. E usa o if para substituir o valor que você deseja.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.