Leer datos de una SD y arduino ejecutar una orden segun datos. SOLUCIONADO

SOLUCIONADO, gracias a Lucario Hola, buenas tardes, tengo una duda rondandome la cabeza:

Se pueden crear una serie de datos en un archivo.txt y que el arduino los lea y segun los datos que ponga interprete una serie de ordenes a la hora que alli se le diga?? O por el contrario creando una libreria se podria hacer??

Ejemplo:

Archivo: enceder.txt 12.10.2016.13:00...... la traduccion: el dia 12 de octubre encienda a las 13:00 horas

Archivo: apagar.txt 12.10.2016.14:00..................traduccion: el dia 12 octubre apague a las 14:00 horas.

un saludo y muchas gracias

Se puede hacer absolutamente todo lo que imagines. El límite siempre esta en tu capacidad para hacerlo.

Comienza viendo algún ejemplo que lea datos de una SD y luego mira como buscar palabras clave a medida que son leídas.

NOTA: editado porque cometí algunos errores de ortografía.

Alguna orientacion de algun codigo que realmente sirva???. Saludos

#include <SD.h>

unsigned int datosEncendido[5];
unsigned int datosApagado[5];

File encendido; // Archivo que contiene el momento para encender.
File apagado; // Archivo que contiene el momento para apagado.

void setup() {
  // Inicialzar la tarjeta, y todo lo que haga falta
  // Abrir archivos

  leerDatos(true); // Leer datos de encendido
  leerDatos(false);  // Leer datos de apagado

  // Ahora aquí decides qué hacer con los datos. Los arrays contienen valores en el siguiente orden:
  // Día, mes, año, hora, minuto
  
}

void loop() {
  // El programa principal
}

void leerDatos(boolean deEncendido) {
  char datos[21]; // Guarda en memoria la línea de texto a procesar.

  if (deEncendido) {

    datos[encendido.readBytes(datos, 20)] = 0; // Lee confiándose de que el archivo sólo tiene una línea de texto

  } else {

    datos[apagado.readBytes(datos, 20)] = 0; // Lee confiándose de que el archivo sólo tiene una línea de texto

  }
  procesar(datos, deEncendido); // Aquí convierte cada número en un int
}

void procesar(char* datos, boolean deEncendido) {
  char* parte;
  if (deEncendido) {

    parte = strtok(datos, ".");
    for (byte i = 0; i < 3; i++) {
      datosEncendido[i] = atoi(parte);
      parte = strtok(NULL, ".");
    }
    // En resumen: separa el texto que esté entre puntos; en cada separación, convierte a int.

    parte = strtok(NULL, ".");

    char* subparte = strtok(parte, ":");
    datosEncendido[3] = atoi(subparte);

    subparte = strtok(NULL, ":");
    datosEncendido[4] = atoi(subparte);
    // En resumen: la parte de la hora, la subdivide en hora y minuto; ambos son convertidos a int también.
  } else {

    for (byte i = 0; i < 3; i++) {
      parte = strtok(datos, ".");
      datosApagado[i] = atoi(parte);
    }
    // En resumen: separa el texto que esté entre puntos; en cada separación, convierte a int.

    parte = strtok(NULL, ".");

    char* subparte = strtok(parte, ":");
    datosApagado[3] = atoi(subparte);

    subparte = strtok(NULL, ":");
    datosApagado[4] = atoi(subparte);
    // En resumen: la parte de la hora, la subdivide en hora y minuto; ambos son convertidos a int también.
  }
}

Te ayuda, o fui demasiado rápido?

WOOOWWWWWW. Lucario me has saturao para 3 dias, jejej

Voy a estudiarlo con tranquilidad y poner casos reales, y ya te contare. Muchas gracias Lucario448, asi da gusto aprender. saludos

Solucionado gracias a Lucario, con unas pequeñas modificaciones puedo agregar temperaturas y humedad en determinados dias del año a un proyecto de un terrario. Dejo el codigo.

Sadvance: Dejo el codigo.

Y dónde está? :confused:

Me estás hablando en serio? O quisiste decir otra cosa?

Lucario, que lo abandono, porque al final voy a intentar hacerlo por un menu de 12 meses y un submenu de 30-31 dias para cada mes, en el que poder añadir y modificar horas de luz, temperatura y humedad. haciendo que amanezca cada dia a una hora determinada asi como las temperturas y humedad para cada dia.

Es porque sino al final me vuelvo loco con tantos datos a la sd, porque tambien guarda algunos en ella. Si alguien me puede orientar se lo agradezco.

Sadvance: al final voy a intentar hacerlo por un menu de 12 meses y un submenu de 30-31 dias para cada mes, en el que poder añadir y modificar horas de luz, temperatura y humedad.

Hablas de un calendario? Pero bajo qué interfaz?

Sadvance: Es porque sino al final me vuelvo loco con tantos datos a la sd, porque tambien guarda algunos en ella.

A qué te refieres? A tener que guardar los 365 días del año o qué clase de datos?

PD: colocaste la palabra "solucionado", entonces... vas a preguntar en otro hilo, o seguir en este?

Viene preguntando por este mismo tema como 4 veces.
Porque no sigues en este tema Sadvance hasta que resuelvas todo, porque vas y vienes, con la libreria TimeAlarm para agregarle mes y dia y ahora con esta idea y luego la olvidas.
Tienes todo el derecho en preguntar pero por temas diferentes, sería buen que continuaras con esto hasta que resuelvas tu problema.

Los temas que he preguntado no son los mismo en ningun momento, han sido para cosas distintas y casos distintos, todos los he resuelto con ayuda de alguien del foro y no precisamente de quien mas ataca o critica a quienes preguntan.
No te preocupes que no volvere a preguntar nada mas en el foro.

Sadvance: No te preocupes que no volvere a preguntar nada mas en el foro.

Pero... por qué si...

surbyte: Tienes todo el derecho en preguntar

Si deberas vas a dejar de preguntar por aquí, entonces te deseo suerte en resolver tus problemas. No es que seamos los únicos, pero sí somos (en teoría) los más experimentados en el tema, y de habla hispana.

No te preocupes que no volvere a preguntar nada mas en el foro.

Por mi pregunta pero si es de este mismo tema continúa y no le pongas solucionado. Hasta lucario se dio cuenta que no lo das por solucionado y sigues con algo parecido. En fin. cuestión de criterios, el mío dice que sigues con el mismo tema. Puedes hacer 10 trabajos diferentes que requieran un Alarma mensual y eso es lo que estas preguntando. No digo que no preguntes, solo que junta todas las consultas en un mismo hilo para que se vea la coherencia y para que le sirva a otro.