Lectura de varias lineas de texto del mismo tamaño

Estimados compañeros de trasnocho.

Espero me puedan colaborar con esto, ya que estoy atrancado.

No se como leer de abajo hacia arriba estas lineas guardadas de texto en una memoria SD, ya que solo puedo leer la ultima pero no he podido tomar la siguiente linea de arriba para sacarle las variables tal como muestro en la parte inferior. Podrian indicarme con cual funcion se realiza esto ?

{Mes: Semana1:75, Semana2:10, Semana3:15, Semana4:40}
{Mes: Semana1:55, Semana2:23, Semana3:19, Semana4:45}
{Mes: Semana1:18, Semana2:33, Semana3:76, Semana4:10}
{Mes: Semana1:17, Semana2:32, Semana3:73, Semana4:15}

Semana1:17
Semana2:32
Semana3:73
Semana4:15

Te envié privado con instrucciones para que edites tu post de acuerdo a las normas.

Y el código cual es?

Gracias Surbyte por responder

el codigo es éste pero solo puedo leer la primera linea de abajo y no tengo idea como poder ir escalando una a una. Muchas gracias por el aporte que me puedan brindar.

#include <ArduinoJson.h>// Nuevamente descargue ArduinoJson version 5 porque la 6 no funciono con este y ya compilo bien

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


File myFile;

String mensaje="Prueba1";
int referencia=1;// 
String cadena="";

void setup()
{
  Serial.begin(9600);
  Wire.begin();
  Serial.print("Iniciando SD ...");
  if (!SD.begin(4)) {
    Serial.println("No se pudo inicializar");
    return;
  }
  Serial.println("inicializacion exitosa");
}
void loop()
{
    if(referencia!=0)
    {
      escribirSD();
      delay(1000);
    }
  referencia=0;
  Serial.println(mensaje); 
  leerSD();
  delay(1000);
}

void escribirSD()
{
  myFile=SD.open("datos.txt",FILE_WRITE);
  if(myFile)
  {
    Serial.println("Escribiendo en SD: ");
    myFile.println();
    myFile.print("{Mes:");
    myFile.print(mensaje);
    myFile.print(", Semana1:1");
    myFile.print(", Semana2:3");
    myFile.print(", Semana3:7");
    myFile.print(", Semana4:10");
    myFile.print(", Objetivo:234}");

    myFile.close();
  }
}
void leerSD()
{
  myFile = SD.open("datos.txt",FILE_READ);//abrimos  el archivo 
  if (myFile) 
  {
    bool line=false;
    myFile.seek(myFile.size()-1); //Ubicacion en posicion anterior a ultimo caracter
    while (myFile.available()) 
    {
      if(line==false) //Primero leer en reversa para buscar salto de linea
      {
        char caracter=myFile.read();
        //Serial.println(caracter);
        myFile.seek(myFile.position()-2);   
        
          if(caracter=='\n') //Cuando encuentra salto de linea cambia estado
          {
            line=true;
          }   
      }

      if(line==true) //Empieza a leer normalmente de izquierda a derecha
      {
          char caracter=myFile.read();
         //Serial.println(caracter);
          cadena=cadena+caracter;
        
          if(caracter=='}') //La cadena termina en este caracter para formato JSON
          {
            break;
          }      
      }
    }
    
    myFile.close(); //cerramos el archivo
    delay(300);  
    StaticJsonBuffer<200> jsonBuffer;
    JsonObject& root = jsonBuffer.parseObject(cadena);
    const char* Mes = root["Mes"];
    const char* Semana1 = root["Semana1"];
    const char* Semana2 = root["Semana2"];
    const char* Semana3 = root["Semana3"];
    const char* Semana4 = root["Semana4"];
    const char* Objetivo = root["Objetivo"];

      Serial.println("*****************");
      Serial.println("datos.txt: ");
      Serial.print("cadena Leida: ");
      Serial.print(cadena);
      Serial.println("");
      Serial.print("Mes: ");
      Serial.println(Mes);
      Serial.print("Semana 1: ");
      Serial.println(Semana1);
      Serial.print("Semana 2: ");
      Serial.println(Semana2);
      Serial.print("Semana 3: ");
      Serial.println(Semana3);
      Serial.print("Semana 4: ");
      Serial.println(Semana4);
      Serial.print("Objetivo: ");
      Serial.println(Objetivo);   
  } 
  else 
  {
    Serial.println("Error al abrir el archivo");
  }
  cadena="";
}

Gracias por compartir el código.

Pregunta básica, has verificado que no te estas quedando sin RAM no?
Digo porqu veo uso de Strings y tamaños de JSON que son interesantes.

Busca la Arduino memory available y hay una rutina que la agregas y te dice como vas conforme avanza el código y si no te estas quedando al limite.

MIentras verifico tu código.

Amigo Surbyte

Tendre que observar lo que me dices porque hasta el momento he ignorado ese punto.

Te agradezco si me puedes colaborar con un programa sin importar si no es usando Json que pueda leer un archivo de texto ya escrito desde la SD y que tenga 5 variables tipo Float por cada linea ((separadas por un espacio o una coma )). No importa si las lee de arriba hacia abajo o viceversa y que vaya leyendo o saltando de linea en linea.

algo para leer en archivo de texto como:

32.5, 45.8, 2.9, 1.2, 105.6
38.5, 23.3, 12.5, 32.2, 12.7
1.3, 2.6, 0.4, -2.1, 89.2
...
..
.

variable#1=89.2
variable#2=-2.1
variable#3= 0.4
variable#4=2.6
variable#5=1.3

...y vuelve a asignar las mismas 5 variables asi:

variable#1=12.7
variable#2=32.2
variable#3=12.5
variable#4=23.3
variable#5=38.5

que pueda asignar por cada linea 5 variables diferentes y volver a cargar esas mismas 5 variables con la siguiente linea hasta llegar al inicio de la primera linea donde finaliza su lectura. Se prevee que sean unas 300 lineas por cada archivo.

Agradezco su gran ayuda.

No doble postees y se paciente, los demas tenemos vida y en mi caso respondo muchos hilos y lleva tiempo hacerlo.
Este hilo será borrado cuando te notifiques

lectura linea a linea de datos en tarjeta SD

Como has duplicado todos los hilos en español e inglés.
Cierro todo y permanecen los hilos en inglés que estan mas avanzados.