Pages: [1]   Go Down
Author Topic: Recuperar valor de tarjeta SD  (Read 1485 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Buenos dias, estoy intentando hacer un contador up dando pulsos a la entrada 2 de mi arduino MEGA. Cada pulso lo voy guardando en la SD que tengo conectada a traves de la placa arduino Ethernet Shield, asi si me quedo sin alimentación, siempre tengo el ultimo valor de la cuenta guardado.

Hasta aqui todo correcto, el problema viene cuando quiero recuperar el valor guardado en la SD para continuar la cuenta por donde se quedo y no desde 0.

Utilizo el ejemplo que trae el software 1.0.1 (modificado) y en el Monitor Serial observo como se guarda y despues como me muestra el valor guardado, con lo que esa parte de lectura/escritura de la SD la tengo correcta.

Os pongo mi codigo para ver si alguien detecta el fallo. Saludos y gracias de antemano.


#include <SD.h>

//Variables

int valor;
int estadoanterior;
int contador;
int buttonPin = 2;              //El boton conectado en el pin 2
File myFile;


void setup()
{
  pinMode(buttonPin, INPUT);
      
  Serial.begin(9600);      //Abrir las comunicaciones serie y esperar
 
  Serial.print("Initializing SD card...");
   pinMode(4, OUTPUT);
  
  if (!SD.begin(4))
  {
    Serial.println("initialization failed!");
    return;
  }
    Serial.println("initialization done.");
  {

////// LECTURA VALORES SD //////
 
    myFile = SD.open("datos.txt");               //volver a abrir el archivo para lectura
    if (myFile)
   {
    Serial.println("Leyendo en datos.txt:");
    while (myFile.available())                      //leer desde el archivo hasta que no hay nada más en él
   {
    Serial.write(myFile.read());
    contador = myFile.read();                      //¡¡¡¡¡posible linea erronea!!!!!
   }
    myFile.close();                                     //cerrar archivo
   }
    else
   {
    Serial.println("error abriendo datos.txt");   //si el archivo no se abre, imprime un error
   }
  }
 }


void loop()
{

/////// CONTADOR ///////
          
         valor = digitalRead(buttonPin);
         if (valor != estadoanterior)
         if (valor == 1)
           {
           contador++;
           Serial.println(contador);
           }
         estadoanterior = valor;

        
////// ESCRITURA VALORES SD //////

if (valor == 1)

 {    
    SD.remove("datos.txt");                                 //borrar SD antes de insertar guardar valores
    myFile = SD.open("datos.txt", FILE_WRITE);      // abrir el archivo donde vamos a leer/escribir datos. Sólo puede ser abierto un archivo a la vez, así que habria que cerrar este antes de abrir otro archivo.
    if (myFile)                                                    //si el archivo se abrió bien, escribir en él
   {
    Serial.print("Escribiendo en datos.txt...");
    myFile.println(contador);
    myFile.close();                                               //cerrar archivo
    
    Serial.println("hecho.");
   }
    else
   {
    Serial.println("error abriendo datos.txt");            //si el archivo no se abre, imprime un error
   }
 }
}
« Last Edit: December 17, 2012, 06:56:55 am by jomogar » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Voy a abreviar la pregunta por si alguien no me ha entendido o no me he sabido explicar.

¿Que comando debo escribir en el programa del arduino, para leer un valor que está alojado en un archivo dentro de la tarjeta SD de la Ethernet Shield?

Y no me funciona:
valor = myFile.read();

En cambio, con este comando si que lo visualizo en el Monitor Serial:
Serial.write(myFile.read());

Gracias de antemano.
Logged

Offline Offline
Jr. Member
**
Karma: 1
Posts: 68
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola Jomogar.

El shield que usas no funciona con comandos AT?? Yo estuve utilizando un shield 3G/GPS y descargando un manual de comandos AT se hace "sencillo" controlar su funcionamiento...

Saludos.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Gracias por la ayuda.
Logged

Pages: [1]   Go Up
Jump to: