Solucionado! para obtener un valor que esta en un archivo en SDcard.

Hola. Mi problema es que quiero obtener un dato especifico de un txt dentro de la tarjeta SD,

ejemplo:

min_1 = 1;
min_2 = 2;
min_3 = 3;
min_4 = 4;
min_5 = 5;
min_6 = 6;

solo quiero el dato que esta despues del signo (=) sea 1, 10 o 100 etc.
Como puedo recuperar dicho dato para usarlo en la aplicacion, gracias.

Con ese ejemplo, sería algo así como:

  • Leer caracteres hasta que llegue al '='.
  • Hacer un parseInt.
  • Leer caracteres hasta que llegue al '\r'.
  • Saltarse un caracter (byte).
    Y se repite hasta que no haya más qué leer.

Me llama la atención tu consulta, tanto que debo preguntarte: sabes leer datos de una SD?
Si lees datos de una SD ya los tienes disponibles para compararlos.
Ahora supongamos que sabes hacerlo.
Sabes comparar cadenas de caracteres sea con punteros o con strings?

Gracias por responder.

A tu primera pregunta si, se leer los datos de una SD, y a la segunda pregunta no, no se comparar cadenas de caracteres sea con punteros o con strings eso se va de mis conocimientos.

Bueno, si sabes leerla ya puedes mostrar los datos en el Serial Monitor.
Al leer los datos, si estan en lineas consecutivas, solo debes contar y entonces a partir de determinado caracter podrias decir este es el que quiero, o estos son los que quiero.
Otro metodo es el que dice lucario usando parseInt.
Otro método es usar un String y buscar el = que tmb te dijo lucario.
Investiga en google: Arduino comparar Strings

Gracias de nuevo a los dos, voy a probar.

por aca puedes estudiarlo.. una vez leido claro

String comparations operators

Para leer el contenido del archivo de la tarjeta:

String GetLine()
  {   String S = "" ;
      if (archivo.available())
         {    char c = archivo.read(); 
               while ( c != ';')
                 {     S = S + c ;
                         c = archivo.read();
                 }
               return( S + '\n') ;
         }
  }

y despues para utilizar solo el dato que queria obtener:

String archivoTXT = GetLine(); 
     
dato1 = archivoTXT.substring(6, 9);

Serial.print(dato1);

Gracias a Lucario448 y surbyte.

Buenas, como alternativa, si quieres tener un respaldo de la información que almacenes, pensando en que todo en esta vida puede fallar o por comodidad si siempre van a ser los mismos registros con diferentes valores, puedes escribirlo en Eeprom. No es tan cómodo desde cierto punto de vista, pero, si mas practico a largo plazo; tampoco vas a poder escribir con tanta facilidad datos largos y complejos.

Respaldar qué a la EEPROM?
La última línea leída?

Recuerda que es aconsejable evitar escribir a la EEPROM con demasiada frecuencia.

Bueno, cada uno lo que necesite, si, no creo que sea muy seguro cada x milisegundos escribir, por ahora, yo lo uso para líneas generales en cuanto a datos necesarios.

Uno de los casos por ejemplo, la fecha y la hora, la proporciona un reloj en tiempo real, el reloj puede fallar, la pila se puede agotar, puede salir defectuoso un componente, se puede superar el umbral de temperatura de trabajo; estos casos son remotos, pero posibles. Una de las funciones principales de escritura en Eeprom, es llevar un "calendario" de días naturales por si fallará el modulo, así, seguir teniendo constancia hasta el momento de revisión.

Llevar el calendario? Entonces muy simple: que actualice cada 12 mn (00h); o cada 24 horas

Si se basa esa alarma en el propio oscilador de arduino si, de depender de una alarma del reloj en tiempo real, no seria muy fiable. Los datos no se recogen del reloj en tiempo real, el propio arduino lleva su propio calendario independiente del mundo.

Dices que "del propio oscilador"...

Eso suena como a usar millis; y que el intervalo de espera para actualizar, sea de 86400000 milisegundos (equivale a 24 horas)

No lo tengo hecho asi exactamente, si no con un perro guardian hecho desde cero, con respaldo de hardware por si las moscas.

Y me imagino que sabes hacerlo "desde cero".

Hasta donde sé, para tener un "watchdog" que provoque una "interrupción por software" (auto-reinicio por ejemplo), se necesita un bootloader diferente al que suelen traer de fábrica....

Si, costo lo suyo, trabaje en ello hace años con PIC, asi que adapte unas pequeñas diferencias. Cuando tenga ocasion, como tengo que documentar toda la parte tecnica del proyecto, expondre la parte del software desglosada para quien pueda aprovecharla.

Sería genial! :smiley: